0

我在 Google Chrome 中使用HTML5SQL.js但我只收到此错误:

Uncaught TypeError: Cannot read property 'sql' of undefined

请看一下我正在使用的这个脚本:http: //jsfiddle.net/mporras/Cx3x5/

4

2 回答 2

1

就像它在 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);
       }
   );
});

可以在这个 jsfiddle中找到一个演示

于 2012-01-23T21:01:50.123 回答
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);
      });
});
于 2012-01-23T07:19:03.260 回答