我是新手。
我只想对表中的特定用户计算表中的行数(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)
还想知道我怎样才能从中返回数?
请帮帮我。
答案 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();