2013-08-31 2 views
0

Я новичок в android.простой выбор вопроса аргументы проходящий вопрос

Мне просто нужно было подсчитать количество строк в таблице против конкретного пользователя в БД (uid - столбец в db).

Для этого я сделал следующие функции:

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

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

    } 

Но его дает мне ошибку:

The method rawQuery(String, String[]) in the type SQLiteDatabase is not applicable for the arguments (String, int)

также хотят знать, как я могу быть в состоянии вернуться отсчет от этого?

Пожалуйста, помогите мне.

ответ

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()); 

} 
+0

если вы передаете 'uid' непосредственно в запросе почему вы требуете '?', THATS WRONG .... – CRUSADER

1

изменить ваш запрос на:

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

Cursor c = ourDB.rawQuery(query); 
1

The method rawQuery(String, String[]) in the type SQLiteDatabase is not applicable for the arguments (String, int)

Очевидно заявляет вы передаете INT вместо ожидаемого String []

Cursor c = ourDB.rawQuery(query,new String[]{ uid }); 
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; 
    } 
1

использовать запрос как:

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

, а затем использовать метод GetCount() на курсор как:

Cursor csr = db.rawQuery("above query string here"); 
int count = csr.getCount(); 
Смежные вопросы