SQLite是android中的自带数据库,可以很方便的实现数据的存储,而且语句和原生的sql联系很大。
学习数据库是一年多前的专业选修课上学过了,好多语句都忘了。各种自认为正确其实就错在关键处的错误,都犯出来了,利用课余空闲时间,陆陆续续,差不多调了也快一周了,虽然在很2的错误上花了这么多时间,但是现在调出来了,还是挺有成就感的。延续以前写解题报告的风格,先总结一下。
一、创建数据库
1、创建一个数据表
(下面带红字的很重要,我一开始由于受某本android的相关书中的讲解误导,一直以为有了前面的变量定义,就创建了一个数据表,其实不然,前面只是找到对应的数据库,如果第一次定义,怎会新生成数据库)创建或打开一个数据库 可以通过这两个方法返回的SQLiteDatabase对象对数据库进行一系列的操作,如新建一个表,插入一条数据等
DataBaseHelper Helper = new DataBaseHelper(this,DataBaseInfo.DB_NAME,null,2); SQLiteDatabase db = Helper.getReadableDatabase();
其中SQLiteDatabase是自带的类,而DataBaseHelper是自定义的继承SQLiteDatabase的类,当然一般习惯性都是这样定义,只不过可以写各种函数的重构。
之后如果要改动,则getWritableDatabase() 创建或打开一个可以读写的数据库 。
2、对于使用Android中的自带数据库SQLite主要有两种方法:
(1)、自己编写sql语句,例如 String sql = “要符合sql语句的格式,这里很容易出错,可以使用System.out.println(sql);在logcat中输出”,接着执行db.exe(sql);
(2)、调用SQLiteDatabase中已经封装好的函数,(不过据说兼容性没那么好?但是我觉得要简单很多,而且不容易出错)
具体:http://blog.sina.com.cn/s/blog_69092aea0101879o.html
3、附注:http://byandby.iteye.com/blog/835580 很不错的一个SQLite的介绍,非入门级勿入。
rawQuery:
SQLiteDatabase的rawQuery()用于执行select语句,使用例子如下:
SQLiteDatabase db= ....; Cursor cursor = db.rawQuery("select * from person",null); ... cursor.close(); db.close();
rawQuery()方法的第一个参数为select语句;第二个参数为select语句中占位符参数的值,如果select语句没有使用占位符,该参数可以设置为null。带占位符参数的select语句使用例子如下:
Cursor cursor = db.rawQuery("select * from personwhere name like ?and age=?", new String[]{"%iteedu%", "4"});