2012-01-11 2 views
0

У меня возникли проблемы с созданием действительного SQL-запроса.Недопустимые символы в sqlite-запросе?

Я пытаюсь проверить, есть ли значение, title присутствует в моем db.

Вот мой класс адаптера, который создает запрос.

public Cursor byTitle(String title) throws SQLException { 
    Cursor mCursor = db.query(true, DATABASE_TABLE, new String[] { 
        KEY_URL 
        }, 
        "title" + "=" +title, 
        null, 
        null, 
        null, 
        null, 
        null); 
    if (mCursor != null) { 
     mCursor.moveToFirst(); 
    } 
    return mCursor; 
} 

И его называют OnClick с

holder.fb.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     final FDBAdapter db = new FDBAdapter(ctx); 
     title = holder.itemName.getText().toString(); 
     db.open(); 
     Cursor c = db.byTitle(title); 
     if (c.getCount()>0) { 
      while (c.moveToNext()) { 
       Toast.makeText(ctx, "yup! " + c.getString(0), Toast.LENGTH_LONG).show(); 
      } 
     } else { 
      Toast.makeText(ctx, "nope! " + holder.itemName.getText().toString(), Toast.LENGTH_LONG).show(); 

     } 
     c.close(); 
     db.close(); 
    } 
    }); 

Моей ошибкой android.database.sqlite.SQLiteException: near "Rootz": syntax error: , while compiling: SELECT DISTINCT url FROM favs WHERE title=[Guide] Rootz Wiki's List of ROMs/Kernels/Tweaks/Theme's/Radios LTE Edition

Я пытался ставить кавычки title как "\""+title+"\"", но это не работает для меня тоже. Как я могу сделать это действительным db-запросом?

ответ

1

Вы можете попробовать это, может работать.

Cursor mCursor = db.query(true, DATABASE_TABLE, new String[] { 
        KEY_URL 
        }, 
        "title=?", 
        title, 
        null, 
        null, 
        null, 
        null); 
+0

Это сделало. Спасибо. Можете ли вы объяснить мне этот вопрос? Что такое =? означает? Является ли это проверкой его существования? – r2DoesInc

+0

вопросительный знак указывает, что значение будет указано в selectArgs, а не в выборе гостиницы. Вы можете объединить все количество? и дать им в selectionArgs – nandeesh

+0

на самом деле я был неправ, я ошибся код, и он просто возвращал отрицательный каждый раз. с вашим примером кода, его недействительным java. my 'title' - одна строка. [Guide] Rootz Wiki Список ROM/Ядро/Tweaks/Тема/Радио LTE Edition и объявляется как String несколько раз – r2DoesInc

0

Не знакомы с SQLite, но я хотел бы попробовать одиночные кавычки, например:

"title" + "='" + title + "'", 
+0

Это сработало, но теперь у меня другая проблема. 'title = new String (title.replaceAll (" '"," "));' необходимо удалить все апострофы. Они также бросали sql-ошибки. Это меняет мое значение, но его появление не соответствует ни разу. – r2DoesInc

Смежные вопросы