0

我是安卓新手。

我只是想针对 DB 中的特定用户计算表中的行数(uid 是 db 中的列)。

为此,我做了以下功能:

 public int getCount(int uid)
    {
        String query = "select count(*) from "+TABLE_MESSAGES+ " WHERE uid=?";

        Cursor c = ourDB.rawQuery(query,uid);

    }

但它给了我错误:

SQLiteDatabase 类型中的方法 rawQuery(String, String[]) 不适用于参数 (String, int)

还想知道我怎样才能从中返回计数?

请帮我。

4

5 回答 5

2

你应该使用这种方式:

public int getCount(int uid)
{
    String query = "select count(*) from "+TABLE_MESSAGES+ " WHERE uid="+uid+"";

    Cursor c = ourDB.rawQuery(query,null);

    if(c.getCount()>0)
    c.moveToFirst();

    do{

    int id = c.getInt(0);

    }while(c.moveToNext());

}
于 2013-08-31T08:29:20.367 回答
2

试试这个方法

public int getCount(int uid){
        try{
            String query = "select count(*)'count' from "+TABLE_MESSAGES+ " WHERE uid="+uid+"";

            Cursor c = ourDB.rawQuery(query,null);

            if (c.moveToFirst()) {

                return Integer.parseInt(cursor.getString(0));

            }
        }catch (Throwable e) {
            e.printStackTrace();
        }
        return 0;
    }
于 2013-08-31T08:31:51.107 回答
1

将您的查询更改为:

String query = "select count(*) from "+TABLE_MESSAGES+ " WHERE uid="+uid;

Cursor c = ourDB.rawQuery(query);
于 2013-08-31T08:27:23.573 回答
1

SQLiteDatabase 类型中的方法 rawQuery(String, String[]) 不适用于参数 (String, int)

清楚地表明您传递的是 int 而不是预期的 String[]

Cursor c = ourDB.rawQuery(query,new String[]{ uid });
于 2013-08-31T08:30:34.883 回答
1

将查询用作:

"SELECT * FROM <DB_NAME> WHERE uid="+uid

然后在光标上使用 getCount() 方法,例如:

Cursor csr = db.rawQuery("above query string here");
int count = csr.getCount();
于 2013-08-31T08:31:56.573 回答