Android数据存储操作③SQLite基本操作

一、SQLiteOpenHelper:

  这个类主要生成一个数据库,并对数据库的版本进行管理。当在程序当中调用这个类的方法getWritableDatabase(),或者getReadableDatabase()方法的时候,如果当时没有数据,那么Android 系统就会自动生成一个数据库。SQLiteOpenHelper 是一个抽象类,我们通常需要继承它,并且实现里边的3 个函数,具体函数如下所示。

  • onCreate(SQLiteDatabase):在数据库第一次生成的时候会调用这个方法,一般我们在这个方法里边生成数据库表。

  • onUpgrade(SQLiteDatabase, int, int) :当数据库需要升级的时候,Android 系统会主动的调用这个方法。一般我们在这个方法里边删除数据表,并建立新的数据表,当然是否还需要做其他的操作,完全取决于应用的需求。

  • onOpen(SQLiteDatabase):这是当打开数据库时的回调函数,一般也不会用到。

具体实例如下:

1 private static class DatabaseHelper extends SQLiteOpenHelper {
2 DatabaseHelper(Context context) {
3   super (context, DATABASE_NAME, null , DATABASE_VERSION);
4 }
5 @Override
6   public void onCreate(SQLiteDatabase db) {
7   // sql 语句
8   String sql = " CREATE TABLE " + TABLE_NAME + " ( " + TITLE
9   + " text not null, " + BODY + " text not null " + " ); " ;
10 Log.i( " haiyang:createDB= " , sql);
11   // 执行这条sql 语句
12   db.execSQL(sql);
13 }
14 @Override
15   public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
16 }
17 }

二、数据库操作

1、得到数据库对象,方法有2个,第一种是用SQLiteOpenHelper对象的getReadableDatabase()、getWritableDatabase()方法。

第二种是采用openOrCreateDatabase()方法,示例代码如下:

1 SQLiteDatabase db = openOrCreateDatabase(name,context.MODE_private, null );
2 db.execSQL(CREATE_SQL);

注意,执行SQL语句的代码最好放在try catch语句中,增强程序的健壮性!

2、查询(query):

query()方法各个参数的含义:

①Boolean类型,可选参数,指定返回值是否唯一(官方API解释为true if you want each row to be unique, false otherwise.

②string类型,表的名称

③string数组,列出所需查询的列的信息

④string类型,selection,相当于sql 语句的where 部分,用于过滤需要查询列的信息,可以包含占位符“?”,如果想返回所有的数据,那么就直接置为null

⑤string数组,selectionArgs。在selection 部分,你有可能用到"?",那么在selectionArgs 定义的字符串会代替selection 中的"?",用于替换where子句中的"?"数组。

⑥string类型,参数为groupBy。定义查询出来的数据是否分组,如果为null 则说明不用分组。

⑦string类型,参数为groupBy。定义查询出来的数据是否分组,如果为null 则说明不用分组

⑧string类型,参数为orderBy,来描述我们期望的返回值是否需要排序,如果设置为null 则说明不需要排序

⑨string类型,可选参数,定义对返回行行数的限制。

3、cursor和ContentValues

cursor又叫游标,相当于对底层数据中结果集的指针。ContentValues和Hashtable 比较类似,它也是负责存储一些名值对,但是它存储的名值对当中的名是一个String 类型,

而值都是基本类型。

4、delete:

1 db.delete(Table_name,key_id + " = " + rowId, null );

第三课参数含义:如果在第二个参数当中有"?"符号,那么第三个参数中的字符串会依次替换在第二个参数当中出现的?符号。

删除表的操作:

1 String sql = " drop table " + TABLE_NAME;
2 db.execSQL(sql);

5、update

1 cv = new ContentValues(); // 创建ContentValues
2   cv.put(COLUMN_NAME,value); // if not update a record,repeat this.
3   string where = KEY_ID + " = " + row_Id;
4 db.update(Table_name,cv,where, null );

6、Insert

1 ContentValues cv = new ContentValues();
2 cv.put(COLUMN_NAME,value, null );
3 db.insert(Table_name, null ,cv);

注:在ListView中的数据更新后可以使用renderListView()进行刷新!

你可能感兴趣的:(android)