第一种写法public Person Find(Integer i) {
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
Cursor cs =db.rawQuery("select * from person where Id=?", new String[]{i.toString()});
int personId;
String personName;
int personAge; while(cs.moveToFirst()){
personId =cs.getInt(cs.getColumnIndex("Id"));
personName = cs.getString(cs.getColumnIndex("Name"));
personAge = cs.getInt(cs.getColumnIndex("Age"));
return new Person(personId,personName,personAge);
}
return null;
}第二种写法:
public Person Find(Integer i) {
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
Cursor cs =db.rawQuery("select * from person where Id=?", new String[]{i.toString()});
int personId;
String personName;
int personAge;
Person person = null;
while(cs.moveToFirst()){
personId =cs.getInt(cs.getColumnIndex("Id"));
personName = cs.getString(cs.getColumnIndex("Name"));
personAge = cs.getInt(cs.getColumnIndex("Age"));
person = new Person(personId,personName,personAge);
}
return person;
}那位大哥帮我看看这两种写法有什么不一样,为什么我用第一种写法就可以运行,用第二种写法会运行不了的!!!
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
Cursor cs =db.rawQuery("select * from person where Id=?", new String[]{i.toString()});
int personId;
String personName;
int personAge; while(cs.moveToFirst()){
personId =cs.getInt(cs.getColumnIndex("Id"));
personName = cs.getString(cs.getColumnIndex("Name"));
personAge = cs.getInt(cs.getColumnIndex("Age"));
return new Person(personId,personName,personAge);
}
return null;
}第二种写法:
public Person Find(Integer i) {
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
Cursor cs =db.rawQuery("select * from person where Id=?", new String[]{i.toString()});
int personId;
String personName;
int personAge;
Person person = null;
while(cs.moveToFirst()){
personId =cs.getInt(cs.getColumnIndex("Id"));
personName = cs.getString(cs.getColumnIndex("Name"));
personAge = cs.getInt(cs.getColumnIndex("Age"));
person = new Person(personId,personName,personAge);
}
return person;
}那位大哥帮我看看这两种写法有什么不一样,为什么我用第一种写法就可以运行,用第二种写法会运行不了的!!!
解决方案 »
- Ubuntu也发布了平板操作系统,您怎么看?
- [较深入问题,请大虾回答]Binder机制如何传递对象引用?
- 一个令人无比蛋疼的线程里更新ListView的问题
- android中YUV420SP显示问题
- 如何统计单个应用程序的wifi流量和2G/3G流量
- Android调用webservice里面的soaphead校验问题,解决方案有没有
- frameworke中的一个status_bar_expanded.xml问题
- Android JNI通信(java byte与c++ char变换)
- Android开发,JS调后台java代码,创建videoView,页面没反应,请问这是为什么?
- android4.0编译问题, cannot find -lX11,请高手解决,多谢
- 急急急急急急...抽屉 SlidingDrawer handle事件
- android简单问题大家都看看(重谢)
你把while(cs.moveToFirst()) 改成 if(cs.moveToFirst()),那么无论你使用哪种方法都没有问题了。
出错的原因是:只要cursor中有数据,那么cs.moveToFirst()就一直返回true,所以第二种方法上,你就死循环了。
Cursor cs;
......
if(cs.moveToFirst())
{
do{
......
}while(cs.moveToNext());
}