Android错误,无法绑定参数,因为索引超出范围

时间:2014-08-20 07:03:30

标签: android

我在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个参数。

我的代码中的错误是什么?

2 个答案:

答案 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"});