1

Web アプリケーションを開発していて、既存のデータベースがあります。WebSQL を使用してデータベースからデータを取得しようとしていますが、「ExceptionReferenceError: tx が定義されていません」というエラーが発生します。

コード:

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 );
}

リストビューに結果を追加しますが、取得しません。

前もって感謝します。

4

1 に答える 1

0

次のようなことを試してください:

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 のデータベースしかないのですか?

- 編集 -

OK、ライブ プロジェクトで使用される関数の例を次に示します。

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)
        });
    });
}

見落としていたものが見えるかもしれません。

于 2013-09-26T06:52:22.940 に答える