android sqlite用法,android使用sqlite数据库
SQLite是Android平台软件开发中经常使用的数据库产品。SQLite作为一个轻型数据库,是为嵌入式而设计的,目前已经在很多嵌入式产品中使用。占用资源非常低,在嵌入式设备中,可能只需要几百K的内存。我们来看看Android平台的SQlite 3的使用情况。
以下概念是在Android平台的SQlite限制下理解的:
数据库的基本概念
SQlite通过文件保存数据库,文件就是数据库。
数据库还包含几个表;
每个表包含多条记录;
每条记录由多个字段组成;
每个字段都有对应的值;
每个值可以指定类型。
数据库名称是文件名;表单有自己的名称;该记录没有名称;每个字段都有一个名称。在SQlite中,没有记录顺序的概念,也没有第一和第二这样的概念。查询只能得到符合条件的记录。我们通过执行SQL指令来操作数据库。
Android平台下的数据库相关类
SQLiteOpenHelper抽象类:通过从该类继承实现user类,提供数据库打开关闭等操作功能。
SQLiteDatabase数据库访问类:执行向数据库中插入记录、查询记录等操作。
SQLiteCursor查询结构操作类:用于访问查询结果中的记录。
创建数据库
假设用一个数据库来存储一个表,表中存储了许多记录。每个记录包含三个字段,即:ID、姓名和年龄。从SQLiteOpenHelper继承并实现了一个类,对数据库的所有操作都封装在这个类中。
构造者:
1.公共DbHelper(上下文Context,字符串名称,
CursorFactory工厂,int版本){
2.超级(上下文、名称、工厂、版本);
3.}
该函数中的参数名是数据库名,即数据库文件名;版本从1开始,以后数据库的表和字段发生变化时,用户可以对这个版本进行改进,从而触发onUpgrade()达到升级旧数据的效果。
在onCreate函数中创建一个表:
1.public void onCreate(SQLite database db){
2.StringBuilder SQL=new StringBuilder();
3.sql.append(“创建表”);
4.sql.append(TBL名);
5.SQL . append(();
6.sql.append(FIELD_ID 文本主键不为空,);
7.sql.append(FIELD_NAME TEXT,);
8.SQL . append(FIELD _ AGE INTEGER );
9.SQL . append(););
10.db . exec SQL(SQL . tostring());
11.}
onCreate函数只会在第一次创建数据库时被调用,所以这里适合做一些数据库初始化操作。
最后,上述函数实际上具有执行SQL语句的效果:
创建表mytable (id文本主键不为空,名称文本,年龄整数);
向表中添加数据
向表中添加数据有两种方式,一种是通过SQLiteDatabase提供的execSQL函数直接执行SQL指令;一个是SQLiteDatabase提供的insert函数,封装了SQL语句,方便用户使用。
通过execsql( insert into my table values( idstr , namestr ,20););您可以插入一条记录,
当插入记录时发生错误,将抛出异常进行处理。
通过insert函数:insert函数需要一个ContentValues类型的值,类似于hashmap。一个键和一个值是成对的。是关键字段名称。
content values v=new content values();
v.put(id , 101 );
v.put(名称,用户101 );
v . put(‘年龄’,44);
mDb.insert(mytable , null ,v);
如果V中的键没有完全指定所有字段,比如less name或者less id,那么记录能否成功插入取决于创建表时的字段限制,比如less name,那么这条记录会被插入,但是name字段的值为NULL;如果缺少id,则不会插入记录,因为在创建记录时指定了NOT NULL。
您可以通过以下说明查看结果:
Adb shell执行并进入shell;
cd /data/data/cn.demo.sql
Sqlite3 database.db进入Sqlite操作界面。帮助可以查看命令帮助。转储可以看到数据库中的数据。
为了方便起见,可以自定义一个插入函数,通过参数传入值,ContentValues的设置在函数内部实现。
1.public void insert(字符串id,字符串名称,整数年龄){
2.if(mDb==null)mDb=getWritableDatabase();
3.content values v=new content values();
4.v.put(id ,id);
5.v.put(名,名);
6.if(年龄0) v.put(年龄,年龄);
7.mDb.insert(TBL名,空,v);
从表中查询记录
SQL语句:从表中选择列列表,其中expr order by column list通过SQLiteDatabase类的query()函数:
1.游标SQLiteDatabase.query(字符串表,
2.字符串[]列,字符串选择,字符串[]选择Args,
3.String groupBy,String having,String order by);
参数:
要更新的记录的表名。
值要更新的字段值。
Where子句Where子句。哪些记录被更新。
WhereArgs Where子句“?”替换字符串。
在执行更新操作时,如果只有一些字段被赋值,那么在更新后,未被赋值的字段仍将保持其原始值。
从表中删除记录:
int SQLiteDatabase.delete(字符串表,字符串table子句,字符串[]
where args);
从SQLite创建和查询的全过程可以看出,在Android平台上,由于SQLite的特性,一切都是以文件为基础的,没有顺序的概念。我们可以通过查询得到符合条件的记录,通过SQL指令操作数据库。另外要背熟几个在Android平台上操作SQLite的类:SQLiteOpenHelper抽象类,SQLiteDatabase数据库访问类,SQLiteCursor查询结构操作类。