【问题标题】:How to access the database using WebSQL?如何使用 WebSQL 访问数据库?
【发布时间】:2013-09-26 06:34:44
【问题描述】:

我正在开发一个 Web 应用程序,并且我有一个现有的数据库。我正在尝试使用 WebSQL 从数据库中获取数据,但收到错误为“ExceptionReferenceError: tx is not defined”

代码:

var databaseSync = null;

try 
{
   databaseSync = openDatabase("database", "1.0", "Database", 10 * 1024 * 1024);
   databaseSync.transaction(function(tx){
      tx.executeSql('SELECT distinct(Subject) FROM Data', [], function (tx, cb_results){
       var len = cb_results.rows.length;
      var results = [];
  for (i = 0; i < len; i++)
  {
    var row = cb_results.rows.item(i);
      $("#list").append('<li><a href="#" id="">'+ row.Subject +'</a></li>');
          $("#list").listview('refresh');
  }    
      }, function(){console.log("Transaction success");}, function(tx, error){console.log("Error" + error.message);});

   });
}
catch (e) {
    // TODO: handle exception
    console.log("Exception" +e );
}

在列表视图中附加结果但没有得到。

提前致谢。

【问题讨论】:

    标签: database html jquery-mobile web-sql


    【解决方案1】:

    试试这样的:

    var databaseSync = null;
    try 
    {
       databaseSync = openDatabase("database", "1.0", "Database", 2 * 1024 * 1024);
       databaseSync.transaction(function(tx){
          tx.executeSql('SELECT distinct(Subject) FROM Data', [], function (tx, cb_results){
          var len = cb_results.rows.length;
          var results = [];
      for (i = 0; i < len; i++)
      {
        var row = cb_results.rows.item(i);
        results[i] = row;
       }        
          console.dir(results);
          }, function(){console.log("Transaction success");}, function(tx, error){console.log("Error" + error.message);});
    
       });
    }
    catch (e) {
        // TODO: handle exception
        console.log("Exception" +e );
    }
    

    另外,为什么只有 2MB 的数据库?

    -- 编辑--

    好的,这里是一个函数的例子,在实际项目中使用:

    function return_icd10_vwxy_headers(callback)
    {
        var results = [];
        session_storage_database_handle.transaction(function (tx) {
            tx.executeSql("SELECT  mainid, key, description FROM qicd10vwxy WHERE parent = '0';", [], function (tx, query_result) 
            {
                var len = query_result.rows.length;
                for (i = 0; i < len; i++){
                    var row = query_result.rows.item(i);
                    results[i] = {
                                    mainid: row["mainid"],
                                    key: row["key"],
                                    description: row["description"]
                                };
                }
                callback(results)
            });
        });
    }
    

    也许你能看到你错过的东西。

    【讨论】:

    • 如何在列表视图中获取数据库数据
    • 此代码适用于我-在许多项目中使用。你看到了什么?你在什么浏览器中使用这个? console.dir 给你什么?
    • 控制台窗口中仅显示交易成功。我正在使用 chrome
    • 您确定您选择的表中有数据吗?是否可以在 sqlite 中复制数据库并执行查询以查看您得到的结果?
    猜你喜欢
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多