2013-04-25 79 views
1

在我的應用程序中,將公司的金額詳細信息存儲在我的sq lite DB中。例如,我的名字列 - 公司1中的DB的第一位,總列-400,名稱列 - 公司2中的DB的第二位,總計第800列,名稱欄中的DB的第三個位置 - 公司1,總計欄--500。總和公司1僅返回總金額。如何使用SUM函數從android中的sqlite數據庫返回值?

我主要的編碼是,

String str = db.company_amount("Company 1"); 
Log.v("Total", ""+str); 

我的數據庫的編碼是,

String company_amount(String name){ 

SQLiteDatabase db = this.getReadableDatabase(); 

String s = ""; 
Cursor cursor = db.rawQuery("SELECT SUM(KEY_AMOUNT) FROM TABLE_BILL_DETAILS WHERE = ?", new String[] {String.valueOf(name)}); 

if (cursor != null) { 

    if (cursor.moveToNext()) { 
     s = cursor.getString(1); 
     return cursor.getString(1); 
    } 
    cursor.close(); 

} 

return s; 
} 

它顯示了一些錯誤,我不知道如何返回values.Can任何一個知道的請幫忙我解決這個問題。

我logcat的錯誤

04-25 14:54:06.701: E/AndroidRuntime(2776): FATAL EXCEPTION: main 
04-25 14:54:06.701: E/AndroidRuntime(2776): java.lang.RuntimeException: Unable to start activity 

ComponentInfo{invoicebill.details/invoicebill.details.Total_company_details}:     android.database.sqlite.SQLiteException: near "=": syntax error: , while compiling: SELECT SUM(KEY_AMOUNT) FROM TABLE_BILL_DETAILS WHERE = ? 
+0

什麼是「一些錯誤」?爲什麼人們避免顯示此錯誤消息?這是你的問題中最重要的部分之一...... – m0skit0 2013-04-25 09:44:03

回答

1
SQLiteDatabase db = getReadableDatabase();  
String sql = "SELECT SUM(KEY_AMOUNT) FROM TABLE_BILL_DETAILS WHERE name = ?"; 
long sum = android.database.DatabaseUtils.longForQuery(db, sql, new String[]{name}); 
1
WHERE = ? 

這是不正確的SQL語法。您忘記指定您與參數進行比較的字段。我想這是或類似的東西,所以正確的語法會是這樣的:

WHERE name = ? 
+0

這應該是主要問題。還沒有得到最後的線。你只需在那裏雙重編碼。另外,getString(1)會給你帶來什麼? – bofredo 2013-04-25 09:52:21

+0

@ m0skit0再次顯示錯誤。 – Yugesh 2013-04-25 10:03:39

1

你可以使用使用ID這樣獲得的詳細信息。

public int getTotalOfAmount(int id) { 

    odb = dbh.getReadableDatabase(); 

    Cursor c = odb.rawQuery("SELECT SUM(" + KEY_AMOUNT + ") FROM " + DATABASE_TABLE + " WHERE " + KEY_ID + " = " + id, null); 

    c.moveToFirst(); 
    int i = c.getInt(0); 
    c.close(); 
    return i; 

} 

+0

我沒有得到你。你在這個答案中說什麼。 – Yugesh 2016-09-01 07:11:19

+0

對不起,我犯了一些錯誤,我記錄下來,請檢查一下,你必須使用這個查詢來求和列 – 2016-09-02 05:43:30

相關問題