【问题标题】:sqlite.SQLiteException: near "s": syntax error: because of apostrophesqlite.SQLiteException:靠近“s”:语法错误:因为撇号
【发布时间】:2014-03-02 10:04:53
【问题描述】:

我想将它插入到我的表中的歌曲名称包含一个“'”(撇号)所以,执行请求时会出错。我该如何解决它

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 单词和 ' 这给了我错误。

【问题讨论】:

  • 省略撇号
  • @RaghavSood 我怎么能逃脱。我得到它运行时..再次转义后,另一个字符串可能有撇号

标签: android sqlite cursor sqliteopenhelper


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    感谢laalto先生,您的回答非常完美。

    【讨论】:

      猜你喜欢
      • 2017-09-24
      • 2021-01-07
      • 2016-06-18
      • 2020-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多