Поиск в базе данных SQLite не возвращает строки

У меня есть метод, в котором я хочу передать в него строку и искать совпадения в базе данных. Я новичок в базах данных, поэтому я в своем уме. Я искал в Google и пробовал разные запросы в течение нескольких дней, и он просто не работает. Курсор создан отлично, поэтому я не ДУМАЮ, что у запроса есть какие-либо проблемы с синтаксисом. Курсор не равен нулю, там есть объект Cursor и все 3 столбца. Но рядов нет. Когда я передаю String, где, как я знаю, должно быть совпадение, он просто не возвращает никаких данных. Вот метод:

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;
}

person Jason Crosby    schedule 07.08.2012    source источник


Ответы (2)


Попробуйте изменить оператор Like, включив в него подстановочные знаки.

Например, изменение с

" like ' " + search + " '"

to

" like ' " + search + "_'"

or

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

Символ процента ("%") в шаблоне LIKE соответствует любой последовательности из нуля или более символов в строке. Знак подчеркивания ("_") в шаблоне LIKE соответствует любому одиночному символу в строке.

Поверьте, это помощь. Удачи

person user1720179    schedule 04.10.2012

вы должны попробовать этот код ... этот код работает правильно ..

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();
            }
person Parag Ghetiya    schedule 12.10.2012