的返回值循环时出现意外的结果我有一个游标,以下列方式返回总结双equivalane到SELECT SUM(balance) FROM accounts WHERE accountName="accountY" OR description="descriptionX"
:通过光标
public Double itemSum(String[] sumCriteria) {
Cursor cursor = mainAccountsDatabase.rawQuery("SELECT SUM(balance) FROM accounts WHERE ?=? OR description=?",
new String[]{sumCriteria[0], sumCriteria[1], sumCriteria[2]});
if (cursor.moveToFirst()) {
return cursor.getDouble(0);
}
return null;
}
在我的Java代码中,我有以下几点:
public void dbGenerator(AccountAdapterView adapter, String filter1, String filter2, String filter3) {
NumberFormat formatter = NumberFormat.getCurrencyInstance();
for (int i = 0; i < listFromDB.size(); i++) {
ListParser newAccount;
String accountNameDisplay = listFromDB.get(i).getaccountName();
String descriptionDisplay = listFromDB.get(i).getDescription();
Double balanceCompare = maSource.itemSum(new String[]{"accountName",accountNameDisplay,accountNameDisplay, "null"});
Double balance = listFromDB.get(i).getBalance();
String formatted = formatter.format(balance);
newAccount = new ListParser(accountNameDisplay, descriptionDisplay, formatted);
adapter.add(newAccount);
}
}
其中listFromDB
是预填充的ListArray
,包含DB的"accountName"
列中的帐户名称。
检查logcat
10个示例行结果的第一输出在其中所述第一填充的列表的条目相匹配"description"
柱和以下的9个和是0
如果我执行SQL中的每一个的值unsummed 10行我得到正确的总和。为什么光标提供不同的输出?
下面是数据外观的一个小表示。
accountName,description,balance
account1,description1,500
account2,description2,20
account3,description3,-68
account4,account1,-1000
account5,description4,400
account6,account2,180
“检查logcat 10个样本行的第一个输出会导致第一个已填充列表项与”description“列匹配的未取得的值,并且以下9个和为0。 - 你可能想扩大这个。很难看到你的问题,特别是因为你没有提供'getBalance' –
关于引用的文本,在我的示例数据中有'account1'作为第一个accountName。第二列中有'account4'作为accountName和'account1'作为描述。我会得到那-1000我的第一笔总和然后0休息。至于getBalance只是一个从ListArray'listFromDB'中获取余额的getter,没什么特别之处。我还输出了正在发送到'itemSum'的'accountName'和'description',这一切都是按顺序的。 – Leb