给出索引4处的绑定值为null的错误

时间:2012-02-06 06:48:13

标签: java android eclipse sqlite

String updateQuery ="INSERT INTO MAAccounts(userId, accountId, accountType, accountName, parentAccountId, currencyCode, isTransactionDefaultStatusOpen, currentBalance, monthlyBudget, createdOn, updatedOn) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; 
        String[] valVars = { 
                stringToDB(account.userId),
                integerToDB(account.accountId).toString(),
                integerToDB(account.accountType.getValue()).toString(),
                stringToDB(account.accountName),
                (integerToDB(account.parentAccountId) != null ? integerToDB(account.parentAccountId).toString() : null),
                stringToDB(account.currencyCode),
                boolToDB(account.isTransactionDefaultStatusOpen).toString(),
                CurrencyToDB(account.currentBalance).toString(),
                CurrencyToDB(account.monthlyBudget).toString(),
                dateToDB(now),
                "false"};

        Cursor c = mDb.rawQuery(updateQuery, valVars);

伙计们我收到错误java.lang.IllegalArgumentException: the bind value at index 4 is null

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:3)

当您使用where clauseany other conditionnull发送一些查询时,会出现此错误。

示例 - select * from tbl_name where _id = null

应该在哪里

select * from tbl_name where _id = some_id

因此,调试并检查在您的查询被触发时,您拥有用于构建查询的所有值。

在你的情况下似乎是这一行,

(integerToDB(account.parentAccountId) != null ? 
                          integerToDB(account.parentAccountId).toString() : null) 

正在返回null,请检查此值。

答案 1 :(得分:0)

很可能是:integerToDB(account.parentAccountId)返回null,然后将索引4处的值设置为null:

(integerToDB(account.parentAccountId) != null ? integerToDB(account.parentAccountId).toString() : null)