android SQLite

SQLiteDatabase 提供了如下静态方法来打开一个文件对应的数据库:

static SQLiteDatabase openDatabase(String path,SQLiteDatabase.CursorFactory factory,int flags):打开path文件所代表的SQLite数据库

static SQLiteDatabase openOrCreateDatabase(File file,SQLiteDatabase.CursorFactory factory):打开或创建(如果不存在)file文件所代表的SQLite数据库

static SQLiteDatabase openOrCreateDatabase(String path,SQLiteDatabase.CursorFactory factory): 打开或创建(如果不存在)path文件所代表的SQLite数据库


获取了SQLiteDatabase对象后,接下来就可调用SQLiteDatabase的如下方法来操作数据库了:

void execSQL(String sql,Object[] bindArgs):执行带占位符的SQL语句

void execSQL(String sql):执行SQL语句

insert(String table,String nullColumnHack,ContentValues values):向执行表中插入数据

update(String table,ContentValues values,String whereClause,String[] whereArgs):更新指定表中的特定数据

delete(String table,String whereClause,String[] whereArgs):删除指定表中的特定数据

Cursor query(String table,String[] columns,String whereClause,String[] whereArgs,String groupBy,String having,String orderBy):对执行数据表执行查询

Cursor query(String table,String[] columns,String whereClause,String[] whereArgs,String groupBy,String having,String orderBy,String limit):对执行数据表执行查询。limit 参数控制最多查询几条记录(用于控制分页的参数)

rawQuery(String sql,String[] selectionArgs):执行带占位符的SQL查询

beginTransaction():开始事务

endTransaction():结束事务


Cursor提供了如下方法来移动查询结果的指针:

move(int offset):将记录指针向上或向下移动指定的行数。offset为正数就是向下移动,为负数就是向上移动。

boolean moveToFirst():将记录指针移动到第一行,如果移动成功则返回true。

boolean moveToLast():将记录指针移动到最后一行,如果移动成功则返回true。

boolean moveToNext():将记录指针移动到下一行,如果移动成功则返回true。

boolean moveToPosition(int position):将记录指针移动到指定的行,如果移动成功则返回


用SQLiteDatabase进行数据库操作的步骤如下:

获取SQLiteDatabase对象,它代表了与数据库的连接

调用SQLiteDatabase的方法来执行SQL语句

操作SQL语句的执行结果,比如用SimpleCursorAdapter封装Cursor

关闭SQLiteDatabase,回收资源


SQLiteDatabase中包含如下两个方法来控制事务:

beginTransaction():开始事务

endTransaction():结束事务

inTransaction():如果当前上下文处于事务中,则返回true,否则返回false

setTransactionSuccessfun()方法来设置事务标志,如果程序事务执行中调用该方法设置了事务成功则提交事务,否则程序将会回滚事务

实例代码如下:

db.beginTransaction();
	try{
		//执行DML语句
		...
		//调用该方法设置事务成功,否则endTransaction()方法将回滚事务
	}finally{
		//由事务的标志决定是否是提交事务还是回滚事务
		db.endTransaction();
	}

SQLiteOpenHelper类:

SQLiteOpenHelper是Android提供的一个管理数据库的工具类,可用于管理数据库的创建和版本更新。一般的用法是创建SQLiteOpenHelper的子类,并扩展它的onCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion)方法。

SQLiteOpenHelper包含如下常用的方法:

synchronized SQLiteDatabase getReadableDatabase():以读写的方式打开数据库对应的SQLiteDatabase对象

synchronized SQLiteDatabase getWritableDatabase():以写的方式打开数据库对应的SQLiteDatabase对象

abstract void onCreate(SQLiteDatabase db):当第一次创建数据库时回调该方法

abstract void onUpgrade(SQLiteDatabase db,int oldVersion,int new Version):当数据库版本更新时回调该方法

synchronized void close():关闭所有打开的SQLiteDatabase


注意:

使用SimpleCursorAdapter封装Cursor时要求底层数据表的主键列的列名为_id,因为SimpleCursorAdapter只能识别列名为_id的主键。

SQLite内部只支持NULL,INTEGER,REAL(浮点数),TEXT(文本)和BLOB(大二进制对象)这5种数据类型,但实际上SQLite完全可以接收varchar(n),char(n),decimal(p,s)等数据类型,只不过SQLite会在运算或保存时将它们转换为上面5种数据类型。

SQLite允许把各种类型的数据保存到任何类型字段中,开发者可以不用关心声明该字段所使用的数据类型。例如,可以把字符串的值存入INTEGER类型的字段中。但有一种情况例外:定义为INTEGER PRIMARY KEY的字段只能存储64位整数,当向这种字段保存除整数以外类型的数据时,会产生错误。


android SQLite,,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。