2012-08-07 85 views
0

我有一個方法,我想傳遞一個字符串到它並搜索數據庫的匹配。我是數據庫的新手,所以我在我的智慧結束。我一直在使用googling並嘗試不同的查詢幾天,現在它不工作。遊標創建得很好,所以我不認爲查詢有任何語法問題。遊標不爲空,那裏有一個Cursor對象,並且裏面也有3列。但是沒有行。當我傳入一個字符串時,我知道應該有一個匹配它只是不返回任何數據。下面是方法:SQLite數據庫搜索不返回行

public Business getBusiness(String search) { 
    File database=currentContext.getDatabasePath(DATABASE_NAME); 
    SQLiteDatabase db = SQLiteDatabase.openDatabase(database.getAbsolutePath(),  
                 null, Context.MODE_PRIVATE); 

    Cursor cursor = db.query(TABLE_NAME, new String[] {COLUMN_ONE, COLUMN_TWO,   
          COLUMN_THREE}, COLUMN_ONE + " like ' " + search + " '", 
          null, null, null, null); 

    if (cursor != null) 
     cursor.moveToFirst(); 

    Business business = new Business(currentContext, cursor.getString(0), 
            cursor.getString(1), cursor.getString(2), 
            cursor.getInt(3), cursor.getInt(4)); 
    db.close(); 

    return null; 
} 

回答

1

訪問This Link它包含了SQLite數據庫

+0

感謝,我會檢查出來。我已經閱讀了一些教程,並且對getReadableDatabase()和getWritableDatabase()有個疑問。我試圖使用這些方法來連接數據庫,但是我遇到了問題,因爲兩者似乎都在調用onCreate(),它會調用數據庫創建代碼,然後拋出一個異常,因爲數據庫已經存在。這些方法是否應該調用onCreate()? – 2012-08-07 13:44:25

+0

將getWritableDatabase()方法調用到您的DbHelper類的構造函數中。 – Yash 2012-08-08 04:17:30

0

試着改變你喜歡的語句從

" like ' " + search + " '" 
包含通配符(S)

例如改變整個教程

" like ' " + search + "_'" 

" like '_" + search + "_'" 

在LIKE圖案百分號(「%」)相匹配的字符串中的零個或多個字符的任何序列。 LIKE模式中的下劃線(「_」)與字符串中的任何單個字符匹配。

相信這是協助。祝你好運

0

你試試這個代碼...此代碼運行正常..

Cursor cursor; 

      try 
      { 
       cursor = db.query 
       (
         TABLE_NAME, 
         new String[] { TABLE_ROW_ID, TABLE_ROW_ONE, TABLE_ROW_TWO, TABLE_ROW_THREE, TABLE_ROW_FOUR, TABLE_ROW_FIVE, TABLE_ROW_SIX }, 
         TABLE_ROW_ID + "=" + rowID, 
         null, null, null, null, null 
       ); 

       cursor.moveToFirst(); 

       if (!cursor.isAfterLast()) 
       { 
        do 
        {     
         String row_item_id=cursor.getLong(0); 
         String row_item_name=cursor.getString(1); 
         String row_item_basic_price=cursor.getFloat(2); 
         String row_item_tax=cursor.getFloat(3); 
         String row_item_shipping=cursor.getFloat(4); 
         String row_item_price=cursor.getFloat(5); 
         byte[] imgByte = cursor.getBlob(6); 
          Bitmap row_item_bitmap=BitmapFactory.decodeByteArray(imgByte, 0, imgByte.length); 

        } 

        while (cursor.moveToNext()); 
       } 
       cursor.close(); 
      } 
      catch (SQLException e) 
      { 
       Log.e("DB ERROR", e.toString()); 
       e.printStackTrace(); 
      }