Titanium 中的 SQLite 中的撇号中断插入查询
Apostrophe breaking insert query in SQLite in Titanium
我正在 JavaScript 中使用 Appcelerator 的 Titanium 开发平台编写应用程序以部署到 Android 移动平台。我正在尝试对 SQLite 数据库执行 INSERT
。
当用户输入单引号或撇号时,字符串会中断插入查询。我究竟做错了什么?
var db = Ti.Database.install('db/kewGarden.sqlite', 'kewGarden');
var driveByData = {
"notes" : $.row3.getValue() // User entered string
};
driveByData = JSON.stringify(driveByData);
dbLib.saveRecording(saveDriveByDetailsSuccess, saveDriveByDetailsError, {
ref_id : newdriveById,
tableName : tableName,
data : driveByData
});
saveRecording : function(onSuccessCallback, onErrorCallback, options) {
var strReplaceData = options.data.replace("'", "\'");
db.execute("INSERT INTO g_temp (ref_id, table_name, data, site) VALUES (" + options.ref_id + ",'" + options.tableName + "','" + strReplaceData + "','" + options.site + "')");
},
此数据库的文档在此处:
http://docs.appcelerator.com/platform/latest/#!/api/Titanium.Database.DB-method-execute
使用参数,那么你不需要转义任何东西:
db.execute('INSERT INTO MyTable(ID, Name) VALUES(?, ?)', 123, name);
你的查询是这样的,
db.execute('INSERT INTO g_temp (ref_id, table_name, data, site) VALUES (?,?,?,?)',options.ref_id,options.tableName,options.data,options.site);
我正在 JavaScript 中使用 Appcelerator 的 Titanium 开发平台编写应用程序以部署到 Android 移动平台。我正在尝试对 SQLite 数据库执行 INSERT
。
当用户输入单引号或撇号时,字符串会中断插入查询。我究竟做错了什么?
var db = Ti.Database.install('db/kewGarden.sqlite', 'kewGarden');
var driveByData = {
"notes" : $.row3.getValue() // User entered string
};
driveByData = JSON.stringify(driveByData);
dbLib.saveRecording(saveDriveByDetailsSuccess, saveDriveByDetailsError, {
ref_id : newdriveById,
tableName : tableName,
data : driveByData
});
saveRecording : function(onSuccessCallback, onErrorCallback, options) {
var strReplaceData = options.data.replace("'", "\'");
db.execute("INSERT INTO g_temp (ref_id, table_name, data, site) VALUES (" + options.ref_id + ",'" + options.tableName + "','" + strReplaceData + "','" + options.site + "')");
},
此数据库的文档在此处:
http://docs.appcelerator.com/platform/latest/#!/api/Titanium.Database.DB-method-execute
使用参数,那么你不需要转义任何东西:
db.execute('INSERT INTO MyTable(ID, Name) VALUES(?, ?)', 123, name);
你的查询是这样的,
db.execute('INSERT INTO g_temp (ref_id, table_name, data, site) VALUES (?,?,?,?)',options.ref_id,options.tableName,options.data,options.site);