【发布时间】:2011-06-15 18:33:28
【问题描述】:
在我的一生中,我无法让光标返回任何数据。我已经验证了它们是数据库中的数据并且我的插入工作正常。官方错误是:
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);
请给我你的想法!谢谢!!
【问题讨论】:
-
+1 使用
SQLiteOpenHelper-class -
在数据库中... COLUMN_A = 0? ...
rand是干什么用的? -
STRING COLUMN_A = "_id";,对不起,应该包括那个。
-
我取出随机数以将问题隔离到光标。无论我是否查找 COLUMN_A = 0,1,2....(其中 COLUMN_A 是数据库中的 _id 列)。
标签: java android sql database cursor