我正在尝试编写代码以从SQL数据库中删除事务。下面的函数添加了一个存款,另一个函数将其从SQL数据库中删除。当我尝试运行它时,它会从此行导致SQLLiteException:
TransactionDAO.removeTransaction(int, String) line: 154
public void addDeposit(int accountID, String transName, long efDate,
double amount) {
ContentValues tran = new ContentValues();
tran.put(SQLHelper.COLUMN_ACCOUNTID, accountID);
tran.put(SQLHelper.COLUMN_TRANSNAME, transName);
tran.put(SQLHelper.COLUMN_ENTEREDTIMESTAMP, Calendar.getInstance()
.getTimeInMillis());
tran.put(SQLHelper.COLUMN_EFFECTIVETIMESTAMP, efDate);
tran.put(SQLHelper.COLUMN_AMOUNT, amount);
tran.put(SQLHelper.COLUMN_COMMITTED, 1);
database.insert(SQLHelper.TABLE_TRANSACTION, transName, tran);
}
public void removeTransaction(int accountID, String transName) {
ContentValues tran = new ContentValues();
database.delete(SQLHelper.TABLE_TRANSACTION, transName, null);
}
我真的不知道如何解决这个问题。我很困惑如何在SQL数据库中找到确切的行。这可能是错误的原因。
答案 0 :(得分:1)
根据public int delete (String table, String whereClause, String[] whereArgs),第二个参数是子句,你应该使用
database.delete(SQLHelper.TABLE_TRANSACTION, String.format("%s=?", SQLHelper.COLUMN_TRANSNAME), {transName});