我在DBAdapter类中给出了如下声明
String sql="SELECT A.Acc_No,A.Cust_Name, T.Trans_Amnt FROM TransactionTable "
+ "T LEFT JOIN AccMaster A on A.Acc_ID = T.Acc_ID "
+ "WHERE T.Trans_Date ='"+ date +"' AND T.Trans_Type='debit' ORDER BY T.Entry_Time asc";
return db.rawQuery(sql, new String[]{KEY_ACCNO,KEY_ACCCUSTNAME,KEY_TRANSAMOUNT});
我的活动电话如下:
public void onClick(View v) {
try {
db.open();
Cursor c = db.gettranscation();
if (c.moveToFirst()) {
do {
DisplayDetails(c);
} while (c.moveToNext());
}
db.close();
} catch (Exception e) {
// TODO: handle exception
Log.e("Retrive Error ", " "+e.getMessage());
}
}
private void DisplayDetails(Cursor c) {
Log.e("",
"KEY_ACCID Id : " + c.getString(0) + "\n" + "KEY_TRANSDATE :"
+ c.getString(1) + "\n" + "KEY_TRANSTYPE : " + c.getString(2));
}
});
但是我收到了这个错误:
无法绑定索引3处的参数,因为索引超出范围。该 statement有0个参数。
我的代码中的错误是什么?
答案 0 :(得分:0)
你的表现不好" SelectionArgs"。为了更好地在查询中,您必须添加字符"?"你想要这个论点的地方。
官方文档Here
示例:
String sql = "SELECT * FROM USER WHERE id = ?";
db.rawQuery(sql, new String[]{idUser});
修改强>
你没有使用Never SelectionArgs,因为你直接绑定了params。
试试这个。
return db.rawQuery(sql,null);
答案 1 :(得分:0)
试试这个......
String sql = "SELECT A.Acc_No,A.Cust_Name, T.Trans_Amnt
FROM TransactionTable T
LEFT JOIN AccMaster A on A.Acc_ID = T.Acc_ID
WHERE T.Trans_Date =? AND T.Trans_Type=?
ORDER BY T.Entry_Time asc";
Cursor cursor = db.rawQuery(sql, new String[]{"18-08-2014", "debit"});