当尝试使用 ID 从 Sqlite 表中获取单行时,我不断收到 android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1 异常> 值(value)。
您认为为什么会发生这种情况?我的代码有什么问题?
public Product getProduct(DBOps dop, String productId) {
Product p = new Product();
String sqlQuery = "SELECT " + TableInfo.PID + " FROM "
+ TableInfo.TABLE_NAME +" WHERE pid="+"'"+productId+"'";
SQLiteDatabase SQ = dop.getReadableDatabase();
Cursor CR = SQ.rawQuery(sqlQuery, null);
try
{
if(CR.getCount() > 0)
{
while (!CR.isAfterLast()) {
p.PID = CR.getString(0);
p.NAME = CR.getString(1);
p.SIZE = CR.getString(2);
p.COLORS = CR.getString(3);
p.DESC = CR.getString(4);
p.PRICE= CR.getString(5);
p.OUTLETS = CR.getString(6);
p.FABRIC = CR.getString(7);
p.QUANTITY = CR.getString(8);
p.CATEGORY = CR.getString(9);
p.RATING = CR.getString(10);
CR.moveToNext();
}
}
else
{
CR.close();
}
}
catch(Exception ex)
{
Log.e("DBOps Error", "Look at DBOps Class's getProduct Method");
Log.e("DBOps Error", ex.toString());
}
return p;
}
最佳答案
android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
因为您当前仅从表中选择一列 TableInfo.PID
但试图从游标中检索多于一列。
因此,通过在选择查询中指定所有列或使用 * FROM
获取所有列来更改选择查询:
String sqlQuery = "SELECT * FROM "
+ TableInfo.TABLE_NAME +" WHERE pid="+"'"+productId+"'";
关于java - 安卓 SQLite : CursorIndexOutOfBoundsException when retrieving a row from a table?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27751908/