2011-07-20 30 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]); 
    }); 
    }); 
}); 

在Android這個工作完全正常,沒有問題。但在iPhone(4.0,4.2)上它根本不起作用。你有什麼想法爲什麼在PhoneGap上使用這個標準的SQL數據庫會在iPhone上造成任何麻煩?是否有一些限制需要注意?例如。數據庫名稱限制,數據庫大小限制或查詢限制?

編輯:不知道它是否有關,但我現在在這個應用程序中使用PhoneGap v。0.9.5.1。

+0

嗯..我不喜歡HTML5,但我可以試試看。你添加標誌給你的數據庫什麼讓你做修改就像它在android'SQLiteDatabase.OPEN_READWRITE'?我的意思是你有權寫作,你確定你可以連接到數據庫嗎? –

回答

3

好吧,我終於想出了這個問題。似乎有某種SQL查詢長度限制,這是沒有記錄。至少我沒有在任何地方找到它。我的INSERT查詢長度爲190個字符(因爲在這裏提出問題的簡單性,我縮短了給定示例中的查詢),並且當我繼續嘗試和測試時,我也試圖縮短列名稱。我不知道這個限制的確切數量,但是長度爲130個字符的查詢工作正常。

+0

將您在iPhone上獲得的錯誤消息放在此頁上的某個地方是非常值得的。這樣當有人搜索它的時候,他們會發現你的發現! –

+1

沒有任何錯誤。當我需要從表格中提取數據時,一切似乎都一切正常,但遺憾的是這是空的。 – Frodik

+0

Android似乎接受超過1000個字符的SQL查詢,根據我剛剛測試的代碼。如果iPhone不......那很煩人。 –

相關問題