如何解决Android SQLLiteDataBase游标返回0行
| 为了我的一生,我无法使光标返回任何数据。我已验证它们是数据库中的数据,并且我的插入正在工作。官方错误是: 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的column_a。
我假设column_a的值不为0。
, 首先尝试以这种方式查询:
String args[] = new String[]{\"0\"};
Cursor cursor = db.rawQuery(
\"SELECT * FROM \" + DATABASE_TABLE + \" WHERE \" + COLUMN_A + \" = ?\",args);
如果这不能帮助您查询外部数据库,请使用外部工具检查数据库。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。