微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Sqlite进行数据存储(二:使用SQLiteDatabase操作SQLite数据库

Android 提供了一个名为 sqliteDatabase 的类,该类封装了一些操作数据库 API ,使用该类可以完成对数据进 添加 (Create) 查询 (Retrieve) 、更新 (Update) 删除 (Delete) 操作(这些操作简称为 CRUD )。对 sqliteDatabase 的学习,我们应该重点掌握 execsql() rawQuery() 方法 execsql() 方法可以执行 insert delete update CREATE TABLE 之类有更改行为的 sql 语句; rawQuery() 方法可以执行 select 句。
execsql() 方法的使用例子:
sqliteDatabase db = ....;
db.execsql("insert into person(name,age) values('我的博客 ',4)");
db.close();
执行上面 sql 语句会往 person 表中添加进一条记录,在实际应用中, 语句中的 “我的博客 这些参数值应该由用户 输入界面提供,如果把用户输入的内容原样组拼到上面的 insert 语句, 用户输入的内容含有单引号时,组 拼出来的 sql 语句就会存在语法错误。要解决这个问题需要对单引号进行转义,也就是把单引号转换成两个 单引号。有些时候用户往往还会输入像 & 这些特殊 sql 符号,为保证组拼好的 sql 语句语法正确,必须对 sql 语句中的这些特殊 sql 符号都进行转义,显然,对每条 sql 语句都做这样的处理工作是比较烦琐的。 sqliteDatabase 类提供了一个重载后的 execsql(String sql,Object[] bindArgs) 方法,使用这个方法可以解 决前面提到的问题,因为这个方法支持使用占位符参数 (?) 。使用例子如下:
sqliteDatabase db = ....;
db.execsql("insert into person(name,age) values(?,?)",new Object[]{"我的博客 ",4});
db.close();
execsql(String sql,Object[] bindArgs) 方法的第一个参数为 sql 语句,第二个参数为 sql 语句中占位符参数的 值,参数值在数组中的顺序要和占位符的位置对应。
sqliteDatabase rawQuery() 用于执行 select 语句,使用例子如下:
sqliteDatabase db = ....;
Cursor cursor = db.rawQuery(“select * from person”,null);
while (cursor.movetoNext()) {
int personid = cursor.getInt(0); // 获取第一列的值 , 第一列的索引从 0 开始
String name = cursor.getString(1); // 获取第二列的值
int age = cursor.getInt(2); // 获取第三列的值
}
cursor.close();
db.close();
rawQuery() 方法的第一个参数为 select 语句;第二个参数为 select 语句中占位符参数的值,如果 select 语句没有使 用占位符,该参数可以设置为 null 。带占位符参数的 select 语句使用例子如下:
Cursor cursor = db.rawQuery("select * from person where name like ? and age=?",new String[]{"%javaeye %","4"});
Cursor 是结果集游标,用于对结果集进行随机访问,如果大家熟悉 jdbc 其实 Cursor JDBC 中的 ResultSet 作用 很相似。使用 movetoNext() 方法可以将游标从当前行移动到下一行,如果已经移过了结果集的最后一行,返 回结果为 false ,否则为 true 。另外 Cursor 还有常用的 movetoPrevIoUs() 方法(用于将游标从当前行移动到上 一行,如果已经移过了结果集的第一行,返回值为 false ,否则为 true )、 movetoFirst() 方法(用于将游标移 动到结果集的第一行,如果结果集为空,返回值为 false ,否则为 true )和 movetoLast() 方法(用于将游标移 动到结果集的最后一行,如果结果集为空,返回值为 false ,否则为 true
除了前面给大家介绍的 execsql() rawQuery() 方法 sqliteDatabase 还专门提供了对应于添加删除、更新、 查询的操作方法 insert() delete() update() query() 。这些方法实际上是给那些不太了解 sql 语法的菜 鸟使用的,对于熟悉 sql 语法的程序员而言,直接使用 execsql() rawQuery()

原文地址:https://www.jb51.cc/sqlite/202786.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐