HTML5SQL.js:未捕获的TypeError:无法读取未定义的属性'sql'

时间:2012-01-23 04:36:57

标签: javascript sql html5 sqlite web-storage

我在谷歌浏览器中使用HTML5SQL.js,但我只收到此错误:

Uncaught TypeError: Cannot read property 'sql' of undefined

请查看我正在使用的此脚本:http://jsfiddle.net/mporras/Cx3x5/

2 个答案:

答案 0 :(得分:1)

就像它在the guide on htm5sql.com中所说的那样,有几种方法可以给出html5sql.js sql语句,并且你的错误是由混合了几种不同的方式引起的。

就像他的回答中提到的xdazz一样,html5sql.process的第一个参数可以只是一个带有一个或多个sql语句的字符串。您还可以传入一个sql语句字符串或sql语句对象的数组。使用sql语句对象的优点是可以定义数据数组并指定单独的成功回调。

基本上你可以这样做:

$(function() {
   html5sql.openDatabase("demo", "Demo Database", 5 * 1024 * 1024);

   html5sql.process(
       [
            "DROP TABLE IF EXISTS speedtest;",
            "CREATE TABLE speedtest (id INTEGER PRIMARY KEY, label TEXT);",
           {
              sql: "INSERT INTO speedtest VALUES (?, ?);",
              data: [1,'1'],
              success: function(transaction, results) {
                   console.info('Success Inserting First Record');
              }
           },
           {
              sql: "INSERT INTO speedtest VALUES (?, ?);",
              data: [2,'2'],
              success: function(transaction, results) {
                 console.info('Success Inserting Second Record');
              }
           }
       ],
       function() {
          console.log("Final Sucess Callback");
       },
       function(error, failingQuery) {
          console.error("Error: " + error.message);
       }
   );
});

可以找到in this jsfiddle

的演示

答案 1 :(得分:0)

html5sql.process函数签名为html5sql.process(SQL, finalSuccessCallback, errorCallback),请尝试以下方式,此处为demo

$(function() {
    html5sql.openDatabase("demo", "Demo Database", 5 * 1024 * 1024);

    var st = "DROP TABLE IF EXISTS speedtest; CREATE TABLE speedtest (id INTEGER PRIMARY KEY, label TEXT); INSERT INTO speedtest VALUES (1, '1');INSERT INTO speedtest VALUES (2, '2');";

    html5sql.process( 
      st,
      function(transaction, results) {
         console.info('Success');
      },
      function(error, failingQuery) {
         console.error("Error: " + error.message);
      });
});