【发布时间】:2019-01-03 17:44:06
【问题描述】:
好的,所以我正在为我的同学构建一个应用程序,该应用程序从我的在线 mysql 数据库中获取程序并将其存储在本地 sqlite 数据库中。
但它给了我一个错误,我也尝试转义双引号和单引号,https://www.eversql.com/sql-syntax-check-validator/ 也验证了我的查询,但我的应用程序仍然崩溃并给我一个错误。
现在代码是“c”语言,因此包含 switch-case 语句,当单引号出现在该 switch-case 语句中时,问题就出现了。
转义引号的代码:
public static void fromJSON(JSONArray jsonArray){
try {
String code;
SplashScreen.titles.clear();
SplashScreen.codes.clear();
int length = jsonArray.length();
for (int i = 0; i < length; i++) {
SplashScreen.titles.add(jsonArray.getJSONObject(i).getString("title"));
code = jsonArray.getJSONObject(i).getString("code");
code = code.replaceAll("\'","\\\\\'");
code = code.replaceAll("\"","\\\\\"");
SplashScreen.codes.add(code);
}
}catch (Exception e)
{
Log.d("Practice", e.toString());
}
}
SQLite 语句是:
public void updateDatabaseWithUpdate(String tableName)
{
SQLiteDatabase SPADatabase = this.openOrCreateDatabase("myDatabase", MODE_PRIVATE, null);
Log.d("getUpdateData", "Updating database : "+tableName);
//SPADatabase.execSQL("DELETE FROM "+tableName);
for(int i = 0; i<titles.size(); i++) {
Log.d("trialanderror", codes.get(i));
SPADatabase.execSQL("INSERT INTO " + tableName + " (title,code) VALUES ('" + titles.get(i) + "','" + codes.get(i) + "')");
}
//Toast.makeText(this, tableName+" Database updated!", Toast.LENGTH_SHORT).show();
setLocalCounts();
//Log.d("dbCount", tableName+" dbCount = "+dbCount);
}
我得到的错误:
07-26 21:58:08.448 8919-8919/com.femindharamshi.spa E/SQLiteLog: (1) "c" 附近: 语法错误 07-26 21:58:08.449 8919-8919/com.femindharamshi.spa D/AndroidRuntime: 关闭虚拟机 07-26 21:58:08.450 8919-8919/com.femindharamshi.spa E/AndroidRuntime: 致命例外: main 进程:com.femindharamshi.spa,PID:8919 android.database.sqlite.SQLiteException:接近“c”:语法错误(代码1):,编译时:INSERT INTO controlstructures(标题,代码)VALUES('WAP在基于菜单的程序上执行数学运算符','#include【问题讨论】: