2017-03-05 64 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; 
    }