2017-03-05 93 views
-1

這是我的方法Android的SQLite數據庫沒有返回

public int getamount(){ 

    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor c = db.rawQuery("SELECT SUM(buy) FROM " + table_name, null); 
    c.moveToFirst(); 
    int i = c.getInt(c.getColumnIndex(col_6)); 
    c.close(); 
    return i; 

    } 

這是我的主要活動

public void button_res(View view) { 
    if (view == findViewById(R.id.textView7)) { 
    total(); 
    } 
} 

public void total(){ 
    Integer i = myDb.getamount(); 
    textView7.setText(i); 
    Toast.makeText(getApplicationContext(),i,Toast.LENGTH_LONG).show(); 
} 

當我點擊我的按鈕,它顯示了我什麼。

+0

我想'total'不會被調用;但這裏沒有人知道你是如何連接'button_res'的。 –

回答

0

您的查詢返回一個名爲「SUM(buy)」或類似的東西(確切名稱不能保證)的列,因此搜索具有col_6指定名稱的列將不起作用。

你可能會迫使列有一個特定的名稱:

SELECT SUM(buy) AS xxx FROM ... 

,或者你可以只取結果的第一列:

int i = c.getInt(0); 

但最簡單的方式來實現,這是對使用helper function隱藏光標管理:

public int getamount() { 
    SQLiteDatabase db = this.getReadableDatabase(); 
    return (int)DatabaseUtils.longForQuery(db, 
      "SELECT SUM(buy) FROM " + table_name, null); 
} 
+0

我照你說的做,但仍然沒有發生 – ammar

0

您的方法是wron g:光標中只有一個柱,這是總和。
因此,這是錯誤的:

int i = c.getInt(c.getColumnIndex(col_6)); 

它必須是:

int i = c.getInt(0); 
0

試試這個

public int getamount() 
    { 
     SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor c = db.rawQuery("SELECT SUM(buy) as amount FROM " + table_name, null); 
     c.moveToFirst(); 
     int i = c.getInt(c.getColumnIndex("amount")); 
     c.close(); 
     return i; 
    }