我有一个函数,该函数对SQLite数据库中的表执行查询。 我声明一个常数:Canada History。它存储在String变量中,比如说2976116257373815815810,
我有一个查询:
Cursor c = mDb.rawQuery("select * from Questions_answers where CHAPTERS = '"+difficulty+"'" , null);
它在撇号附近引发异常。
Logcat输出:
I/Database( 1170): sqlite returned: error code = 1, msg = near "s": syntax error
D/AndroidRuntime( 1170): Shutting down VM
W/dalvikvm( 1170): threadid=1: thread exiting with uncaught exception (group=0x40015560)
E/AndroidRuntime( 1170): FATAL EXCEPTION: main
E/AndroidRuntime( 1170): android.database.sqlite.SQLiteException: near "s": syntax error: , while compiling: select * from Questions_answers where CHAPTERS = 'Canada's History'
我也尝试过:
1. difficulty=difficulty.replaceAll("'","''");
2. difficulty=difficulty.replaceAll("'","\'");
3. difficulty = DatabaseUtils.sqlEscapeString(difficulty);
除此之外,它对像Canada History这样的单个单词也很有效,我的意思是没有特殊字符的单词。
请给我解决问题的建议,谢谢。