将Javascript对象插入Titanium SQLite数据库
Inserting Javascript Object into Titanium SQLite Database
如果我有一个javascipt对象:
var person = new Object();
person.name = "newPerson";
person.occupation = "Programmer";
person.stateName = function(){
console.log(this.name);
};
使用基于SQLite的Titanium.Database API,如何将此对象存储在单个字段中?以下操作正常:
var db = Titanium.Database.openFile(Titanium.Filesystem.getFile(
Titanium.Filesystem.getApplicationDataDirectory(),'myDatabase.db'));
db.execute("CREATE TABLE IF NOT EXISTS myTable (persons TEXT)");
然后我想将对象存储在一个表字段中:
db.execute("INSERT INTO myTable (persons) VALUES(?)", JSON.stringify(person));
但返回以下内容:
SQL Statement invalid or database missing
[21:55:35:300] [Titanium.Database.DB] [Error] Exception executing: INSERT INTO myTable
(person) VALUES(?), Error was: SQL Statement invalid or database missing
您的sql是错误的。你必须做两件事:
-
在字符串化的json.中转义您的
-
在SQL语句中用引号括起该字符串。
你所做的相当于:
db.execute("INSERT INTO myTable (persons) VALUES({name: "newPerson, stateName: function() {console.log(this.name)})");
更简单:INSERT INTO myTable (persons) VALUES( {name:"Joe"} );
名称部分可能有引号,也可能没有引号,这取决于您在哪里执行此操作。(最好添加它们,使存储的对象成为真正的JSON。)
你想做的是INSERT INTO myTable(persons) VALUES ( "{'"name'": '"Joe'"} " );
请注意,您有不带引号的VALUES(something),而您需要带引号的VALUES("something)。此外,您还必须转义内容中的任何引号(并做其他事情,但这是另一个主题。)
所以你的声明应该更像这样:
INSERT INTO myTable(persons) VALUES("{'"name'":'"newPerson'", '"stateName'": function stateName(){console.log(this.name)}}");
相关文章:
- PHP:显示sqlite数据库中的html格式数据,使用tinymce保存
- 是否可以使用NativeScript使用Sqlite数据库
- 使用Javascript将多条记录插入SQLite数据库时出错
- 连接SQlite数据库
- 以html形式显示sqlite数据库中的数据(phonegap)
- 如何访问Chrome创建的SQLITE数据库
- 使用 SQL .js在 JavaScript 中加载 SQLite 数据库
- Phonegap应用程序SQLite数据库初始设置
- 将捕获的图像存储到SQlite数据库中?(科尔多瓦)
- 将SQLite数据库存储在IndexedDB中
- 有没有一种简单的方法可以通过javascript将MySQL文件导入SQLite数据库
- 我想将长文本文档解析为SQLite数据库.如何转义所有不支持的字符
- Windows 8应用程序Javascript和SQlite(数据库已锁定)
- 从sqlite数据库查询数据结果文件名
- 如何在PhoneGap应用程序中使用SQLite数据库
- 从sqlite数据库获取结果
- 为什么我可以添加一个新主题,但我可以't向SQLite数据库添加新注释
- 用PHP读取SQLite数据库?(使用sencha touch sqlite制作)
- 使用 sql.js 从磁盘读取 SQLite 数据库
- PhoneGap - 读取预打包的 sqlite 数据库