DRYな備忘録

Don't Repeat Yourself.

SQL文が実行されない【SQLite】【javascript】【Xcode + phone gap】

【問題】

SQL文が実行されない。

phone gap を用いて、Xcodeプロジェクトを作っている時、

javascriptSQLiteを操作する必要があった。

問題の箇所は以下の通り。

var db = window.openDatabase("hoge","1,0","hogehoge","1024");

db.transaction(function(tx){

    tx.executeSql(

        'CREATE TABLE IF NOT EXISTS test_table (id SERIAL, val001 TEXT)'

        ,function(res){

            alert("success!");

        },function(err){

            alert("errorr!!");

        }

    );

});

 

アラートがどちらも発動していないので、tx.executeSqlが発動していないのだろう。

 

【原因】

executeSqlメソッドの引数は、4つ。

第一引数: SQL

第二引数: よくわからんが、第一引数を補完するもの?

第三引数: 成功時コールバック関数

第四引数: 失敗時コールバック関数

これの、第二引数を抜かして、成功時コールバックを書いていたことによる。

【解決】

tx.executeSql(

    'CREATE TABLE IF NOT EXISTS test_table (id SERIAL, val001 TEXT)'

    ,function(res){

        alert("success!");

    },function(err){

        alert("errorr!!");

    }

);

の部分を、

tx.executeSql(

    'CREATE TABLE IF NOT EXISTS test_table (id SERIAL, val001 TEXT)'

    ,[]

    ,function(res){

        alert("success!");

    },function(err){

        alert("errorr!!");

    }

);

とした。

【参考】

このページがドンズバリであった。

 

DRY