【问题标题】:Why can't any rows query in SQLite Android?为什么不能在 SQLite Android 中查询任何行?
【发布时间】:2026-01-22 03:50:01
【问题描述】:

我在 android 中查询 SQLite 数据库时遇到问题。我这样做的方法是使用WHERE Profile ? 条件让它成为任何值。但是当我调用cursordel.getCount() 时它返回0,而在我的Profile 列中有很多行。

SQLiteDatabase DB1 = this.getWritableDatabase();
ContentValues contentValues1 = new ContentValues();

Cursor cursordel = DB1.rawQuery("Select * from Userdetails WHERE Profile = ? ", null);
Log.i(TAG,"Count cursordel:" + String.valueOf(cursordel.getCount()));

我的问题是,如何使用WHERE Profile ? 计算数据库中的行数,以便我可以使用long result = DB1.update("Userdetails", contentValues, "FirstProfile =?", null); 正确更新框Profile ?

【问题讨论】:

  • 我自己找到了解决方案。将null 修复为new String[] {FirstProfile}

标签: java android sqlite


【解决方案1】:

当您想提供一个参数作为rawQuery() 的第二个参数时,使用占位符?,类似于:

Cursor cursordel = DB1.rawQuery(
    "Select * from Userdetails WHERE Profile = ?", 
    new String[] {"{1ABC#428#240#12}"}
);

这将返回表中Profile 等于{1ABC#428#240#12} 的行。

如果你想获取表的所有行,你应该删除WHERE 子句并将null 作为rawQuery() 的第二个参数传递:

Cursor cursordel = DB1.rawQuery("Select * from Userdetails", null);

【讨论】:

  • 我找到了解决办法,还是谢谢你。
  • @SaHiRo 很好,如果解决了,别忘了点击复选标记接受答案。