Android 从表SQLite中检索多个特定列的数据
我试图在SQLite中从一个表的多个特定列检索数据,但使用下面的代码,我不知道为什么,但它不是从两个不同的列获取数据,而是从我放入方法的第一列获取数据,即“支出”表的“预算”列:- 使用上面的代码,我的“amountfromdb_budget”和“amountfromdb_FoodDrinks”都将与我的SQLite的“budget”列中的值一起插入。我的目标是将“预算”列中的值检索到“amountfromdb_budget”中,将“FoodDrinks”列中的值检索到“amountfromdb_FoodDrinks” 下面是我的DatabaseHelper类中的“getLatestAmount”方法:-Android 从表SQLite中检索多个特定列的数据,android,sqlite,multiple-columns,database-cursor,Android,Sqlite,Multiple Columns,Database Cursor,我试图在SQLite中从一个表的多个特定列检索数据,但使用下面的代码,我不知道为什么,但它不是从两个不同的列获取数据,而是从我放入方法的第一列获取数据,即“支出”表的“预算”列:- 使用上面的代码,我的“amountfromdb_budget”和“amountfromdb_FoodDrinks”都将与我的SQLite的“budget”列中的值一起插入。我的目标是将“预算”列中的值检索到“amountfromdb_budget”中,将“FoodDrinks”列中的值检索到“amountfromdb
public Cursor getLatestAmount(String id, String category) {
SQLiteDatabase db = this.getWritableDatabase();
Cursor latestamount = db.rawQuery("SELECT "+category+" FROM spendings WHERE id =" +id , null);
return latestamount;
}
我的“支出”表的结构如下:-
private static final String SPENDING_TABLE = "spendings";
private static final String ID_SPENDING = "id";
private static final String BUDGET = "budget";
private static final String TOTAL_EXPENSES = "total_expenses";
private static final String FOODNDRINKS = "foodndrinks";
private static final String TRAVEL = "travel";
private static final String SHOPPING = "shopping";
private static final String ENTERTAINMENT = "entertainment";
private static final String OTHERS = "others";
private static final String BALANCE = "balance";
从获取食物和饮料的数量时起,您没有覆盖光标。因此,您仍在使用预算光标。因此,将结果从
getLatestAmount
保存到latestamount
改变
myDb.getLatestAmount(id, temp_category);
至
latestamount = myDb.getLatestAmount(id, temp_category);
因此您的代码应该如下所示
如果我理解正确的话。它两次获取预算列数据是的,它两次获取预算列数据,但我想获取预算列数据并将其放入“amountfromdb\u budget”中,第二次调用“myDb.getLatestAmount(id,temp\u category)”时,我已将“temp\u category”更改为“FoodDrinks”,以获取“FoodDrinks”中的金额列,并将该值插入“amountfromdb_FoodNumbers”但是不知道如何或正确的方法如何覆盖光标,以便在获取预算后获得食物和饮料的数量?您需要将方法的结果保存到变量latestamount我如何覆盖光标,以便在获取预算后获得食物和饮料的数量?您调用该方法并保存result到变量
latestamount
。正如我上面所示。因此,在获得预算后。对于食品饮料,我使用这个变量?“amountfromdb\u foodrinks=myDb.getLatestAmount(id,temp\u category);”?否。您可以看到下面的行myDb.getLatestAmount(id,temp\u category)
在这里将其更改为此行latestamount=myDb.getLatestAmount(id,temp_category);
然后您的问题就解决了。更改该行,使其等于latestamount
,您可以将其他内容与您在问题中发布的内容保持一致
latestamount = myDb.getLatestAmount(id, temp_category);
String temp_category = "budget";
Cursor latestamount = myDb.getLatestAmount(id, temp_category);
if (latestamount.getCount() == 0) {
Toast.makeText(AddExpenses.this, "No amount found !", Toast.LENGTH_LONG).show();
} else {
latestamount.moveToFirst();
amountfromdb_budget = latestamount.getDouble(0);
}
temp_category = "foodndrinks";
// the line below is what you needed to change
latestamount = myDb.getLatestAmount(id, temp_category);
if (latestamount.getCount() == 0) {
Toast.makeText(AddExpenses.this, "No amount found !", Toast.LENGTH_LONG).show();
} else {
latestamount.moveToFirst();
amountfromdb_foodndrinks = latestamount.getDouble(0);
}