Android数据存储——SQLite数据库

本篇整合Android数据库的使用,以保存一个实体类为例子。

先来看下数据库语句:

ORM:关系对象映射

增加数据:

 ContentValues values = new ContentValues();
 values.put("name", "小丽");
 values.put("phone", "110");
 mDB.insert("student",//表名
             null, //规避插入语句的错误
             values );//插入的值 

删除数据:

mDB.delete("student", //表名
           "name =?",//条件语句
           new String[]{"小丽"});//条件语句的占位符

修改数据:

 ContentValues values = new ContentValues();
  values.put("phone", "10086");
  mDB.update("student",//表名
              values, //要修改的值
              "name =?",//条件语句
              new String[]{"小丽"});

查询数据:

 Cursor cursor = mDB.query("student",//表名
                null,//查询的字段
                null,//条件语句
                null,//条件语句的占位符
                null,//分组语句
                null,//分组条件
                null);//排序
  boolean toFirst = cursor.moveToFirst();
  while(toFirst){
        String name = cursor.getString(cursor.getColumnIndex("name"));
        String phone = cursor.getString(cursor.getColumnIndex("phone"));
            MyData myData = new MyData(name, phone);
            dataList.add(myData);
            toFirst = cursor.moveToNext();
        }       

下面是数据库创建及使用步骤

1、方法调用

private DBMang_Order dbMang_Order; dbMang_Order=DBMang_Order.getInstance(getApplicationContext());

//查询
ArrayList<OrderUncheck> uncheckList = dbMang_Order.query();
//删除
dbMang_Order.delete(orderNo);
//增加
dbMang_Order.insert(new OrderUncheck(orderNo, account, action));
//修改
dbMang_Order.update(new OrderUncheck(orderNo, account, action));

2、首先创建要存储的实体类

public class OrderUncheck {

    String orderNo;
    double account;
    int action;
    public String getOrderNo() {
        return orderNo;
    }
    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }
    public double getAccount() {
        return account;
    }
    public void setAccount(double account) {
        this.account = account;
    }
    public int getAction() {
        return action;
    }
    public void setAction(int action) {
        this.action = action;
    }
    public OrderUncheck(String orderNo, double account, int action) {
        super();
        this.orderNo = orderNo;
        this.account = account;
        this.action = action;
    }
}

3、创建数据库

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class MySQL_Order extends SQLiteOpenHelper {

     private static final String name = "count"; //数据库名称
     private static final int version = 1; //数据库版本
     //第三个参数CursorFactory指定在执行查询时获得一个游标实例的工厂类,设置为null,代表使用系统默认的工厂类  

    public MySQL_Order(Context context) {
        super(context, name, null, version);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql="CREATE TABLE neworder (_id INTEGER PRIMARY KEY AUTOINCREMENT,orderNo VARCHAR(200),account VARCHAR(19100),action VARCHAR(200))";
        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub

    }
}

4、代码中被调用的方法在这个类:增删改查

public class DBMang_Order {
    private static DBMang_Order mDbManager=new DBMang_Order();
    private static SQLiteDatabase mDb;
    private static Context context;
    private  DBMang_Order() {

    }
    public static synchronized DBMang_Order getInstance(Context context){
        DBMang_Order.context = context;
        if(mDb==null){
            MySQL_Order mySQL = new MySQL_Order(context);
            mDb = mySQL.getWritableDatabase();
        }
        return mDbManager;
    }
    interface NewTable{
        String TABLE_NAME="neworder";
        String TABLE_COLUMN_orderNo="orderNo";
        String TABLE_COLUMN_account="account";
        String TABLE_COLUMN_action="action";
    }
    //增
    public void insert(OrderUncheck info){
        ContentValues values=new ContentValues();
        values.put(NewTable.TABLE_COLUMN_orderNo, info.getOrderNo());
        values.put(NewTable.TABLE_COLUMN_account, info.getAccount());
        values.put(NewTable.TABLE_COLUMN_action, info.getAction());
        Log.w("mDb.insert", ""+info);
        Log.w("mDb.insert",""+ values);
        mDb.insert(NewTable.TABLE_NAME, null, values);
    }
    //删
    public void delete(String orderNo) {
        Log.w("delete", orderNo);
        mDb.delete(NewTable.TABLE_NAME, NewTable.TABLE_COLUMN_orderNo+"=?", new String[]{orderNo});
    }
    //改
    public void update(OrderUncheck info){
        ContentValues values = new ContentValues();
        values.put(NewTable.TABLE_COLUMN_account, info.getAccount());
        mDb.update(NewTable.TABLE_NAME, values, NewTable.TABLE_COLUMN_orderNo+"=? and "+NewTable.TABLE_COLUMN_orderNo+"=?", new String[]{String.valueOf(info.getOrderNo()),""+info.getAccount()});
    }
    //查
    public ArrayList<OrderUncheck> query(){

        Cursor cursor = mDb.query(NewTable.TABLE_NAME, null, null, null, null, null, null);
        ArrayList<OrderUncheck> list=new ArrayList<OrderUncheck>();
        boolean toFirst = cursor.moveToFirst();
        while (toFirst) {
            String orderNo = cursor.getString(cursor.getColumnIndex(NewTable.TABLE_COLUMN_orderNo));
            String account = cursor.getString(cursor.getColumnIndex(NewTable.TABLE_COLUMN_account));
            String action = cursor.getString(cursor.getColumnIndex(NewTable.TABLE_COLUMN_account));
            double accountd = Double.parseDouble(account);
            int actiond=Integer.parseInt(action);
            OrderUncheck order = new OrderUncheck(orderNo, accountd,actiond);
            list.add(order);
            toFirst=cursor.moveToNext();
        }
        cursor.close();
        return list;

    }
}
时间: 2024-10-01 20:11:42

Android数据存储——SQLite数据库的相关文章

Android 数据存储——SQLite实例、判断数据库中表是否存在

本文主要记录一下Android SQLiteDatabase中如何判断数据库中表是否存在,以及测试SQLiteDatabase数据库的基本操作.有关SQLite的详细说明,可以查看转载的Android 数据存储--SQLite使用详解 例子: AndroidManifest.xml--没有做任何修改,创建工程默认 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="

android数据存储_SQL数据库

源码下载(免下载积分):下载 对于保存重复或者结构化的数据数据,使用数据库很好的.在android对于数据库的API在 android.database.sqlite包中. 创建并操作数据库: 创建: 1. 继承SQLiteOpenHelper //继承SQLiteOpenHelper类, public class DictionaryOpenHelper extends SQLiteOpenHelper{ 2. 定义相关的成员变量和常量 public static final String D

数据存储——SQLite数据库存储——API

一.特点 1.存储具有一定结构的数据 2.文件类型.db 3.存储目录:date/date/包名/datebases/数据库文件 4.应用卸载之后,数据同时被删除 5.数据不被其他应用直接操作 二.SQLite数据库 三.API 1.SQLiteOpenHelper   工具类 (1)是一个抽象类,需要继承并实现了抽象方法之后才能使用 (2)抽象方法: ①void   onCreate(SQLiteDatabase db) 1)创建和初始化数据库的回调方法 2)当连接数据库,未找到数据库文件时调

数据存储——SQLite数据库存储

一.特点 1.存储具有一定结构的数据 2.文件类型  .db 二.SQLite数据库 1.特点 1-轻型的关系型数据库 2-支持多种编程语言 3-适合在移动设备中使用 4-安装文件小 5-支持多个操作系统 6-运行速度快(数据量小) 7-数据库本身是单个文件 2.数据类型 1-整数:INT  .INTEGER: 2-浮点数:FLOAT   .DOUBLE  : 3-字符串文本 ①CHAR,定长的字符串: ②WARCHAR,变长的字符串: ③TEXT,大文本: 4-时间日期:DATE.DATETI

数据存储——SQLite数据库存储——SQL语句——DML数据操作语言、内置函数聚合函数

一.连接查询之内连接 select   a.字段,b.字段   from   表1   a,表2   b    where   a.字段=b.字段  And ... 二.DML 数据操作语言 1.增  insert  into values 1-insert  into 表名  values (跟所有字段一一对应的值的列表) 2-insert  into 表名(字段列表)  values (跟字段列表一一对应的值的列表) 3-insert  into 表名  select  对应的字段列表  f

数据存储——SQLite数据库存储——SQL语句——DQL数据查询语言

一.where  查询条件 1.操作符 (1)is null/is not null  判断控/非空 (2)like  模糊比较字符串 ①通配符 1)%  任意数量字符 2)_   单个字符 ②用法 1)like  ‘%条件%’ 2)like  ‘%条件’ 3)like  '条件%' 4)like  '_条件_' 5)like  '_条件' 6)like  '条件_' (3)in  判断是否在值得列表内 ①和对单个字段  or  运算等效 ②用法 1)字段名 in (值1,值2,...) 2)字

数据存储——SQLite数据库存储2

一.表的约束 1.唯一约束 1-字段内容(多字段内容合并)唯一,不能有重复行 2-同一个表可以有多个唯一约束 2.检查约束 1-确保在保存前符合要求 2-对字段的数据进行值的范围等验证 3.维护表之间的完整性 3.外键约束 1-主键关联到另外一个表的字段,这个字段就是外键 2-要求:外键在添加或修改时,数据在主键表中必须存在;主键字段在修改或删除时,数据在外键表中不存在. 二.建表规则 符合三个范式: 1.第一范式:字段表达的意义是单一的,不可拆分 2.第二范式:避免数据冗余,把冗余数据拆分成多

数据存储——SQLite数据库存储——SQL语句

SQL语句 一.分类 (1)数据定义语言DDL (2)数据控制语言DCL (3)数据管理语言DML (4)数据查询语言DQL:select  from  where 二.运算符 (1)算术运算:+  -  *  / (2)比较运算 ①>,>=,<,<= ②= ③!=,<> (3)逻辑运算符 ①and  与 ②or  或 ③not  非 (4)字符串运算符 ①连接字符串运算:|| ②用单引号引起来,表示字符串 三.特点 (1)第三代语言 (2)不区分大小写

Android版本升级同时Sqlite数据库的升级及之前数据的保留

http://www.cnblogs.com/wang340/archive/2013/05/06/3063135.html http://www.eoeandroid.com/forum.php?mod=viewthread&tid=166052 做Android应用,不可避免的会与SQLite打交道.随着应用的不断升级,原有的数据库结构可能已经不再适应新的功能,这时候,就需要对SQLite数据库的结构进行升级了. SQLite提供了ALTER TABLE命令,允许用户重命名或添加新的字段到已