请看一下
public String getDateAndTime(long rowid){
CustomSQLiteOpenHelper helper = new CustomSQLiteOpenHelper(context);
this.db = helper.getWritableDatabase();
Cursor cursor = db.
rawQuery("select created from testRecords where rowid = ?", new String[] { Long.toString(rowid) });
if (cursor != null)
{
cursor.moveToFirst();
String datandtime= null;
datandtime=cursor.getString(0);
db.close();
return datandtime;
}
db.close();
return null;
}
现在我明显地忽略了一些重要的事情:
如果光标不为null,我希望整个metod返回datandtime
但它不会发生这样的事情:
如果游标不为null,则继续执行并转到结束return null
返回null。
请问我在这里错过了什么?
请,为何关闭???
答案 0 :(得分:1)
将cursor.getString(0)
更改为cursor.getString(1)
。数据库列始终从1
计算,而不是0
。
答案 1 :(得分:0)
如果cursor不为null,则返回datandtime
并在此处停止。所以它不执行这一行:return null;
答案 2 :(得分:0)
它对数据库进行了查询,并将结果放入游标中。 如果结果与null不同,则cursor从查询中获取第一个String的值并返回它。 另一方面,如果cursor的结果为null,则return语句为null。
有一个很好的代码!
答案 3 :(得分:0)
简单地说:
cursor.getString(0)为null
答案 4 :(得分:0)
请尝试这样:
public String getDateAndTime(long rowid){
CustomSQLiteOpenHelper helper = new CustomSQLiteOpenHelper(context);
String datandtime= null;
this.db = helper.getWritableDatabase();
Cursor cursor = db.
rawQuery("select created from testRecords where rowid = ?", new String[] { Long.toString(rowid) });
if (cursor != null)
{
cursor.moveToFirst();
datandtime=cursor.getString(0);
}
db.close();
return datandtime;
}