您的位置:首页 > 移动开发 > Android开发

【Android】SQLite Cursor含义、模糊查找 String 空对象与空值的区别

2016-07-20 16:52 453 查看

模糊查找

字符串s为你要查找的内容

String s="content";
Cursor c=db.rawQuery("SELECT * FROM notecontent WHERE detail LIKE ?",new String[]{"%"+s+"%"},null);


Cursor

在SQlite的操作中,游标cursor是指向的数据库结果的返回集,返回集的意思是说假如原来数据库database有5条(行),每行两列(name & age),例如:

表名:database

A 18

B 20

C 22

D 23

E 15

你执行寻找年龄小于20岁的

Cursor c=db.rawQuery("SELECT * FROM database WHERE age>?",new String[]{"20"});


它会返回

A 18

B 20

这就是所谓的返回结果集。

出现
android.database.CursorIndexOutOfBoundsException:Index -1 requested, with a size of 1
错误的时候,是由于android中数据库处理使用cursor时,游标不是放在为0的下标,而是放在为-1的下标处开始的。

所以下面的代码会返回错误

Cursor cursor = db.rawQuery("SELECT * FROM database WHERE _id=?",new String[] {key_id.toString()});
Integer id = cursor.getInt(cursor.getColumnIndex("_id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
int uamount = cursor.getInt(cursor.getColumnIndex("age"));
cursor.close();


应改为

Cursor cursor = db.rawQuery("SELECT * FROM database WHERE _id=?",new String[] {key_id.toString()});
if (c.moveToFirst()){
Integer id = cursor.getInt(cursor.getColumnIndex("_id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
int uamount = cursor.getInt(cursor.getColumnIndex("age"));
}
cursor.close();


String

Java是面向对象的编程语言,
String s="abc"
等价于
String s=new String("abc");


其中
s
"abc"
是不相等的,因为其内存地址不一样
s!="abc"
,需要调用
s.equal("abc")
才会对其值进行比较。

另外注意
String s=null;
String s="";
的区别,一个是空对象,一个是空字串。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android sqlite string