对于我的生活,我无法让光标返回任何数据。我已经验证了他们是数据库中的数据,我的插入工作正常。官方错误是:
CursorIndexOutOfBoundsException:请求索引0,,大小为0
顶级声明:
private DatabaseHelper DBHelper;
private SQLiteDatabase db;
public DBAdapter(Context ctx)
{
this.context = ctx;
DBHelper = new DatabaseHelper(context);
this.db = this.DBHelper.getWritableDatabase();
}
我的功能:
public String getRandomEntry()
{
int rand;
Random random = new Random();
int numEntries = (int)this.getCount();
if(numEntries == 0)
return "ERROR: Database is empty.";
rand = random.nextInt(numEntries);
Cursor cursor = DBHelper.getWritableDatabase().rawQuery(
"SELECT * FROM " + DATABASE_TABLE
+ " WHERE " + COLUMN_A + " = " + 0, null);
Log.i("numEntries", Integer.toString(numEntries));
Log.i("rand", Integer.toString(rand));
Log.i("cursor", Integer.toString(cursor.getCount()));
cursor.moveToFirst();
return cursor.getString(0);
}
我也试过抓住光标:
Cursor cursor = db.rawQuery(
"SELECT * FROM " + DATABASE_TABLE
+ " WHERE " + COLUMN_A + " = " + 0, null);
请告诉我你的想法!谢谢!!
答案 0 :(得分:2)
这里似乎没有随意的东西。您似乎每次都在寻找值为0的column_a。
我认为column_a没有任何值为0的内容。
答案 1 :(得分:2)
首先尝试以这种方式查询:
String args[] = new String[]{"0"};
Cursor cursor = db.rawQuery(
"SELECT * FROM " + DATABASE_TABLE + " WHERE " + COLUMN_A + " = ?", args);
如果在那里查询返回行,如果这不利于使用外部工具检查数据库。