如何正确地寻址到Cursor中的特定列?

时间:2012-10-10 08:53:06

标签: java android android-sqlite android-cursor

让我们假设,我们在SQLite中有两个表:TBL_PRODUCTTBL_PRODUCT_ALIASES。现在,我想从连接的两个表中查询一些数据:

String sql = "SELECT " + TBL_PRODUCT + "." + C_PROD_PKEY_ID + ", " + TBL_PRODUCT_ALIASES + "." + C_PROD_ALIASES_PKEY_ID +
    " FROM " + TBL_PRODUCT + " LEFT JOIN " + TBL_PRODUCT_ALIASES + " ON " + TBL_PRODUCT + "." + C_PROD_PKEY_ID + " = " + TBL_PRODUCT_ALIASES + "." + C_PROD_ALIASES_PKEY_ID +
    " WHERE " + C_PROD_SERVER_ID + " = ? LIMIT 1";

Cursor cursor = SQLiteDataHelper.getInstance().rawQuery(sql, new String[] {"" + js_CartProduct.getLong("prod_id")});

多数民众赞成没有任何问题。然后我想从返回的光标中获取一些数据:

if (cursor.getCount() > 0) {
    cursor.moveToFirst();
    Long prodId = cursor.getLong(cursor.getColumnIndexOrThrow(TBL_PRODUCT + "." + C_PROD_PKEY_ID));
    //... Some other code
}

现在,问题出现了:C_PROD_PKEY_IDC_PROD_ALIASES_PKEY_ID在现实世界中的字符串相同:"_id"。结果getLong()不会从cursor的所需列返回多长时间。

我应该如何正确地解决所需的列?除了在AS而不是cursor.getLong(0)中使用明确数字在sql查询中使用cursor.getLong(cursor.getColumnIndexOrThrow(TBL_PRODUCT + "." + C_PROD_PKEY_ID))还有其他方法吗?

更新

cursor.getColumnNames()会返回:[_id, _id]

0 个答案:

没有答案