sqlite.SQLiteException:near“s”:语法错误:因为撇号

时间:2014-03-02 10:04:54

标签: android sqlite cursor sqliteopenhelper

我要将其插入到我的表中的歌曲名称包含一个“'”(撇号),因此,在请求被执行时会出错。我该如何解决呢?

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'而导致错误。

2 个答案:

答案 0 :(得分:10)

理论上,您可以在SQL中将'转义为''

但是,最好使用变量绑定。用?替换SQL中的字符串文字,并在数组中提供相应数量的String

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

答案 1 :(得分:1)

您可以在逗号中获取Sting的详细信息,或者使用其他方式使用此光标。

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

谢谢laalto先生,你的答案是完美的。