1

在我的应用程序中,将公司的金额详细信息存储在我的 sq lite DB 中。例如,我在名称列 - 公司 1 中的第一个 DB 位置,总列 - 400,名称列 - 公司 2 中 DB 的第二个位置,总列 - 800,DB在名称列的第三位-公司1,总列-500。如何对公司1的详细信息求和以返回总金额。

我的主要编码是,

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;
}

它显示了一些错误,我不知道如何返回值。有人知道请帮我解决这个问题。

我的 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 = ?
4

3 回答 3

1
WHERE = ?

这是不正确的 SQL 语法。您忘记指定要与参数比较的字段。我猜它的名字或类似的东西,所以正确的语法是这样的:

WHERE name = ?
于 2013-04-25T09:44:57.880 回答
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});
于 2013-04-25T10:08:16.217 回答
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;

}

.

于 2016-08-31T05:47:43.527 回答