简单的选择查询参数传递问题

时间:2013-08-31 08:23:02

标签: android

我是新手。

我只想对表中的特定用户计算表中的行数(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)

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

请帮帮我。

5 个答案:

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

}

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

答案 2 :(得分:1)

将您的查询更改为:

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

Cursor c = ourDB.rawQuery(query);

答案 3 :(得分:1)

  

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

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

Cursor c = ourDB.rawQuery(query,new String[]{ uid });

答案 4 :(得分:1)

将查询用作:

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

然后在游标上使用getCount()方法 喜欢:

Cursor csr = db.rawQuery("above query string here");
int count = csr.getCount();