【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="";的区别,一个是空对象,一个是空字串。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题