sqlite.SQLiteException: рядом с s: синтаксическая ошибка: из-за апострофа

Название песни, которое я хочу вставить в свою таблицу, содержит « ' » (апостроф), поэтому при выполнении запроса возникает ошибка. Как я могу это исправить

Cursor pid = mDB.rawQuery("select Id  FROM MusicPlayer WHERE "Path ='" + sname + "';", null);

Я получаю время выполнения sname, поэтому .. sname=/mnt/sdcard/Now Thats What I Call Music 85 [Bubanee]/16 - Let's Get Ready To Rhumble (100% Radio Mix) - PJ & Duncan.mp3

Я получаю ошибку ниже..

android.database.sqlite.SQLiteException: near "s": syntax error: , while compiling: SELECT Id FROM MusicPlayer WHERE Path ='/mnt/sdcard/Now Thats What I Call Music 85 [Bubanee]/16 - Let's Get Ready To Rhumble (100% Radio Mix) - PJ & Duncan.mp3';

Потому что sname содержит let's слово с ', что дает мне ошибку.


person Shakeeb Ayaz    schedule 02.03.2014    source источник
comment
Избегайте апострофа   -  person Raghav Sood    schedule 02.03.2014
comment
@RaghavSood, как мне сбежать. я получаю это во время выполнения.. после того, как это снова экранируется, другая строка может иметь апостроф   -  person Shakeeb Ayaz    schedule 02.03.2014


Ответы (2)


Теоретически вы можете избежать ' как '' в SQL.

Однако лучше использовать привязку переменных. Замените строковые литералы в SQL на ? и укажите соответствующее количество String в массиве:

Cursor pid = mDB.rawQuery("select Id  FROM MusicPlayer WHERE Path = ?;",
    new String[] { sname });
person laalto    schedule 02.03.2014

вы можете получить подробную информацию о Sting через запятую или использовать другие средства, такие как этот курсор.

Cursor cursor = odb.rawQuery("SELECT * FROM " + DATABASE_TABLE + " WHERE " + KEY_ITEM + "=?;", new String[]{comboname});

Спасибо, сэр, ваш ответ работает отлично.

person S HemaNandhini    schedule 15.11.2016