2011-07-20 9 views
4

私はPhoneGapを使用してHTML5で書かれたモバイルアプリを持っています。アプリの一部では、次のようにSQLデータベースを使用しています。iPhoneで実行中のPhoneGapアプリケーションのSQLデータベースに問題があります

db = window.openDatabase("my_app_database", "1.0", "Description of my database about 50 chars long", 1000000); 

$.get('db/app_data.dat',function(result){ 
    var data = $.parseJSON(result); 
    if (!data) { 
    alert('Data error'); 
    return false; 
    } 
    db.transaction(function(tx){ 
    tx.executeSql('DROP TABLE IF EXISTS table_a'); 
    tx.executeSql('DROP TABLE IF EXISTS table_b'); 
    tx.executeSql('CREATE TABLE table_a (id INTEGER,name,html)'); 
    tx.executeSql('CREATE TABLE table_b (id_a INTEGER, id_b INTEGER)'); 
    }); 
    db.transaction(function(tx){ 
    $.each(data.item, function(i, v){ 
     tx.executeSql('INSERT INTO table_a(id, name,html) VALUES (?,?,?)',[v.id, v.name, v.html]); 
    }); 
    }); 
}); 

これは、問題なく完全に正常に動作します。しかしiPhone(4.0,4.2)では全く動作しません。 PhoneGapでのSQLデータベースのこの標準的な使用がiPhoneで何らかの問題を引き起こすのではないかというアイデアはありますか?注意すべきいくつかの制限がありますか?例えば。データベースの名前の制限、データベースのサイズの制限、またはクエリの制限?

EDIT:関連性があるかどうかわかりませんが、私は今このアプリケーションでPhoneGap v。0.9.5.1を使用しています。

+0

ええと...私はHTML5に熱心ではありませんが、試してみることができます。データベースにフラグを追加して、アンドロイドの 'SQLiteDatabase.OPEN_READWRITE'のような変更を許可するものはありますか?私はあなたが書き込む特権を持っていますか?あなたはあなたがデータベースに接続できることを確認しましたか? –

答えて

3

私は最終的にこの問題を解明しました。 SQL問合せの長さの制限があるようですが、これは文書化されていません。少なくとも私はどこでもそれを見つけられませんでした。私のINSERTクエリの長​​さは190文字です(ここでの質問の簡略化のため、ここではクエリを短縮しています)。試して試してみたところ、列名を短くしようとしました。この制限の正確な数はわかりませんが、130文字の長さのクエリは正常に機能しました。

+0

あなたはこのページのどこかにiPhoneのエラーメッセージを載せることは非常に価値があります。誰かがいつかそれを検索するようにその方法は、あなたの発見を見つけるでしょう! –

+1

何もエラーはありませんでした。残念ながら空であったテーブルからデータを取り出そうとしたとき、すべてが現時点でOKだった。 – Frodik

+0

Androidは、ちょうどテストしたコードに基づいて、1000文字以上のSQLクエリを受け付けるようです。 iPhoneが...そうでなければ、それは迷惑です。 –

関連する問題