2012年7月31日星期二

android与SQLite的小总结

android与SQLite的小总结

关于SQLite的一些基础知识,网上很多,例如http://wenku.baidu.com/view/dfd52e0d6c85ec3a87c2c5e0.html,在这里就只是小小地总结下在Android开发中SQLite的一些关键点吧。

SQLite的前世今生大家都懂得的,一个轻量级数据库可以说就是一个文件组织体系,一个兼容大部分数据库语法的嵌入式数据库。因为在android的SDK对其提供了支持,所以大部分android的开发中,APP内部文件系统的建立都离不开SQLite。

首先,数据库都有创、增、改、删、查这几个操作。所以就对这几个做个小结吧。

1、数据库创建,调用父类 SQLiteOpenHelper 的构造函数,进行构造。这个方法需要四个参数:上下文环境(例如,一个 Activity,通常是this),数据库名字,一个可选的游标工厂(通常是 Null),一个代表你正在使用的数据库模型版本的整数(自己定义)。其中的onCreate()方法会在第一次创建数据库的时候被调用。因此常常在此oncreate()里面写入建表语句。例如db.execSQL(CREATE_TABLE_SQL_RES);

final String CREATE_TABLE_SQL_RES=

"create table IF NOT EXISTS res_data (id integer primary key autoincrement," +
" uid varchar(60), web varchar(60),url varchar(255), name uvarchar(60),realated varchar(60))";

特别在建表过程中值得一提的是,必须实体化helper方法才能建表成功,例如db = dbhelper.getWriteableDatabase();

2,增、改的操作,可以使用db.execSQL();使用数据库操作语法操作,同时也可以通过android里的insert()和update()方法操作。个人建议后者,因此这些操作跟android的代码风格更加统一,而且出错时的错误报告也更加明显。具体的使用方法很多文章里面也是没有写,在这里特别写一下,

public static SQLiteHelper dbhelper;
public static SQLiteDatabase db;

dbhelper = new SQLiteHelper(this,"4pics.db3",null,1);
db = dbhelper.getWritableDatabase();

db.insert(。。。。。。);

3 查询 查询方法主要是用rawQuery和query,两者中前者的直观性更好,更符合数据库操作语句的风格,而后者在面对动态变量的时候具有更好的操作性。推荐使用后者。

这两个方法的调用返回的都是游标,游标类似于一个数据库的索引号,就跟你去图书馆借书,你通过查询系统查到的先是一个书号,然后你再根据这个书号找到你所需要借的书。这个游标就是这个意思。

得到游标之后需要把游标所代表的数据取出来,这时候就需要用到getString()和getInte语句。这两个语句的作用顾名思义就都清楚了。唯一需要特别说明的是,这里取到的游标是一整个游标系,返回值是在最后一个游标上,直接转换是没有结果的。因此需要先动用moveToFirst函数,才能得到真正的数据。

给个例子吧,

Cursor c = db.query("res_data", columns, "id=?",parms, null, null, null);
int nameColumnIndex = c.getColumnIndex("name");
c.moveToFirst();
FILE_NAME = c.getString(nameColumnIndex);

4 SQLite的主要操作中的一些重点就这些了,整体还是很轻量级很好用的,至于是否要结合contentProvider来使用就按照具体的项目所需了,以后有机会再写下Provider的应用吧。

zhuzheic


TAG: