android sqlite数据库什么都不返回

时间:2017-03-05 08:49:17

标签: java android sqlite 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();
}

当我点击我的按钮时,它什么都没显示。

3 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

您的方法是错误的:光标中只有一个列,即总和 所以这是错误的:

http

必须是:

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

答案 2 :(得分: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;
    }