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
任何帮助将不胜感激
答案 0 :(得分:3)
当您使用where clause
或any other condition
向null
发送一些查询时,会出现此错误。
示例 - 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)