第一种写法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;
}那位大哥帮我看看这两种写法有什么不一样,为什么我用第一种写法就可以运行,用第二种写法会运行不了的!!!
解决方案 »
- 怎么将Amazon IAP当做Plugin添加到Unity3D项目中。
- 有没有成型的安卓设备的工厂测试程序?
- 两台手机通过socket相连,一直处于阻塞状态,为何?
- 菜鸟求教android2.3源码的Phone模块
- 跪求authoware简历
- 我想继承BroadcastReceiver在onReceive做一些处理为什么不行?
- 请教关于View的android:onClick的问题
- 关于在ActivityTestCase的子类中调用getContext()方法显示方法不存在
- .net开源啦,可以编安卓啦
- 自己不会美工,怎么搞才能漂亮点?
- 急急急急急急...抽屉 SlidingDrawer handle事件
- android简单问题大家都看看(重谢)
你把while(cs.moveToFirst()) 改成 if(cs.moveToFirst()),那么无论你使用哪种方法都没有问题了。
出错的原因是:只要cursor中有数据,那么cs.moveToFirst()就一直返回true,所以第二种方法上,你就死循环了。
Cursor cs;
......
if(cs.moveToFirst())
{
do{
......
}while(cs.moveToNext());
}