素材巴巴 > 程序开发 >

Android SQLite数据库之二,使用sqlite3工具

程序开发 2023-09-06 06:56:34

在Android SDK的tools目录下提供了一个sqlite3.exe工具,它是一个简单的SQLite数据库管理工具,类似于MySQL提供的命令行窗口。在有些时候,开发者利用该工具来查询,管理数据库。

我们可以用sqlite3吧数据库导出到本地计算机上的硬盘目录下,可以运行如下来启动SQLite数据库:

sqlite3 f:/my.db3


sqlite3中常用的命令如下。

》 .datbases:查看当前数据库。

》 .tables:查看当前数据库里的数据表。

》 .help:查看sqlite3支持的命令。

当然,sqlite3还支持一些常用的命名,当在窗口中输入.help之后,该工具将会列出这些命令。除此之外,sqlite数据库还支持绝大部分常用的sql语句,开发者可在窗口运行各种DDL,DML,查询语句来测试他们。

sqlite数据库所支持的sql语句与MySQL大致相同,开发者完全可以把已有的MySQL经验“移植”到sqlite数据库上。当然,当Android应用提示某条sql语句有语法问题时,最好先利用sqlite3这个工具类测试这条语句、以保证sql语句的语法正确。

需要指出的是,sqlite内部只支持NULL、INTEGER、REAL(浮点数)、TEXT(文本)、BLOB(大二进制对象)这5种数据类型,但实际上sqlite完全可以接受varchar(n),char(n),decimal(p,s)等数据类型,只不过sqlite会在运算或保存时将它们转换成上面5种数据类型中的相应类型。

除此之外,sqlite还有一个特点:它允许把各种类型的数据保存到任何类型字段中,开发者可以不用关心声明该字段所使用的数据类型。例如程序可以把字符串类型的值存入INTEGER类型的字段中,也可以把数值类型的值存入布尔类型的字段中。。。。。。但是有一种情况例外:定义为INTEGER PRIMARY KEY(主键)的字段只能存储64位整数,当向这种字段保存除整数以外的其他类型的数据时,sqlite会产生错误。

由于sqlite允许存入数据时忽略底层数据列实际的数据类型,因此在编写见表语句时也可省略数据列后面的类型声明,例如如下sql语句对于sqlite也是正确的:

create table my_test

{

_id integer primary key autoincrement,

name,

pass,

gender

};

开发者可以把MySQL开发经验直接移植到sqlite数据库上。

--------------------------------------------------------------------------------------------------


事务

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

》beginTransaction():开始事务。

》endTransaction:结束事务。

除此之外,SQLiteDatabase还提供了如下方法来判断当前上下文是否处于事务环境中。

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

当程序执行endTransaction()方法时将会结束事务----那到底是提交事务呢,还是回滚事务呢?这取决于SQLiteDate八色是否调用了setTransactionSuccessful()方法来设置事务标志,如果程序事务执行中调用该方法设置了事务成功则提交事务;否则程序将会回滚事务。

示例代码如下:

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



标签:

上一篇: 转载知乎-前端汇总资源 下一篇:
素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。