2015-06-27 42 views
0

,我需要搜索數據的基礎上,這是我使用的方法:SQL查詢不通過我正在寫一個Android應用程序的參數

public Cursor getData(String table, String keyword, SQLiteDatabase db){ 

    String selection; 
    Cursor cursor; 

    switch (table){ 
     case "User": 
      String [] projection = {id,name,phone}; 
      selection = "username LIKE ?"; 
      String [] selection_arg = {keyword}; 
      cursor = db.query("User",projection,selection,selection_arg,null,null,null); 
      break; 
     //omitted 
     default: 
      return null; 
    } 
    return cursor; 

用戶投放關鍵字

keyword = search_user.getText().toString(); 
Cursor cursor = dbHelper.getData(ShippingApplication.User.USER_TABLE,keyword,db); 

代碼不工作,當我調試,我看到DB變量的mQuery是: SQLiteQuery: SELECT userID, userName, phoneNumber FROM User WHERE userName LIKE ? 它看起來像查詢不傳遞到SQL命令的關鍵字的值。 有人能告訴我什麼是錯的?

編輯2:我更改代碼一點點,現在它的工作原理:

String selection = ShippingApplication.User.name + " LIKE '%" + keyword + "%'"; 
Cursor cursor = db.query(The table name,projection,selection,null,null,null,null); 
+0

發表您的logcat –

+0

@KrishnaV那裏,我說我的日誌貓 –

+0

地方相關logcat的唯一 –

回答

-1

嘗試這種方式

請檢查您的SQLiteDatabase對象不是空

之後檢查表是否被創建

我得到的遊標數我已經調試它,它的工作對我罰款

public Cursor getData(String table, String keyword, SQLiteDatabase db){ 

     String selection; 
     Cursor cursor; 

     switch (table){ 
      case "Tbl_staticContent": 
       String [] projection = {"PageTitle","Content"}; 
       selection = "PageTitle LIKE ?"; 
       String [] selection_arg = {keyword}; 
       cursor = db.query("Tbl_staticContent",projection,selection,selection_arg,null,null,null); 

       Log.e("count",""+cursor.getCount()); 
       //I have create table and stored data and also check the like condtion also it's work fine and get the cursor.getCount() > 0 also . 

       break; 

      default: 
       return null; 
     } 
     return cursor; 
} 
+0

表已經創建, SQLiteDatabase對象指向正確的數據庫;不知何故方法db.query沒有將selection_arg的值傳遞給問題點,我不知道爲什麼,我改變了一些東西,現在它可以工作,看到我的edit2,你知道它爲什麼現在可以工作嗎?我很困惑 –

+0

好...這種方式也是可行的。 db.query你直接傳遞選擇*從你的表名和類似的聲明也。 –

相關問題