我正在尝试实现一个REST环境,在客户端,客户端数据存储在SQLite数据库中。
我之前在使用Cordova-sqlite-storage的Cordova上完成了这项工作,但我无法使用其vanilla-JS对应的sql.js
完成相同的工作。我遇到的问题是Database()
函数没有返回任何内容,因此我无法进行任何类型的查询。
这是我的测试文件(test.html):
<html>
<head>
<script src="https://rawgit.com/kripken/sql.js/master/js/sql.js"></script>
</head>
<body>
<script>
var sql = window.SQL;
var db = sql.Database(); // Is returning undefined ?
sqlstr = "CREATE TABLE hello (a int, b char);";
sqlstr += "INSERT INTO hello VALUES (0, 'hello');"
sqlstr += "INSERT INTO hello VALUES (1, 'world');"
db.run(sqlstr); // Run the query without returning anything
var res = db.exec("SELECT * FROM hello");
console.log(res);
</script>
</body>
</html>
&#13;
这会返回以下错误:
TypeError:this.handleError不是函数
sql.js
第466行
如果我自己创建this.handleError()
,则错误更改为:
TypeError:db未定义
test.html的
第13行
有关如何解决此问题的任何想法?我看了很多地方,但文件似乎很少。
答案 0 :(得分:4)
sql.Database()
称为构造函数(例如 db = new sql.Database();
)。请注意new
,如Usage example。
var sql = window.SQL;
var db = new sql.Database();
sqlstr = "CREATE TABLE hello (a int, b char);";
sqlstr += "INSERT INTO hello VALUES (0, 'hello');"
sqlstr += "INSERT INTO hello VALUES (1, 'world');"
db.run(sqlstr);
var res = db.exec("SELECT * FROM hello");
console.log(res);
&#13;
<script src="https://rawgit.com/kripken/sql.js/master/js/sql.js" type="text/javascript"></script>
&#13;