1

私のアプリケーションでは、会社の金額の詳細を sq lite DB に保存します。たとえば、名前列の DB の最初の位置 - 会社 1、合計列 - 400、名前列 - 会社 2、合計列の DB の 2 番目の位置 - 800、名前列の DB の 3 番目の位置 - 会社 1、合計列 - 500.how 会社 1 の詳細のみを合計して、合計金額を返します。

私の主なコーディングは、

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

私のDBコーディングは、

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

このように 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 に答える
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 に答える