在iPhone上运行的PhoneGap应用程序中SQL数据库出现问题

4

我有一个使用PhoneGap编写的HTML5移动应用程序。 应用程序的某些部分使用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。

嗯...我不太熟悉HTML5,但我可以尝试一下。你在数据库中添加了像Android中SQLiteDatabase.OPEN_READWRITE这样允许你进行修改的标志吗?我的意思是,你是否拥有写入权限,并确保可以连接到数据库? - Nikola Despotoski
1个回答

3

好的,我终于解决了这个问题。似乎存在一种没有记录的SQL查询长度限制。至少在我所查找的任何地方都没有找到。我的INSERT查询语句有190个字符(为了更简单地提出问题,我在下面的示例中缩短了查询语句)。当我一直尝试和测试时,我还试图使列名更短。我不知道这个限制的确切数字,但长度为130个字符的查询正常工作。


在这个页面上放置你在 iPhone 上遇到的错误信息将非常值得。这样,当有人在某一天搜索它时,他们会发现你的发现! - Chris Cunningham
1
没有任何错误。一切都看起来很好,直到我需要从表中提取数据,但不幸的是表是空的。 - Frodik
根据我刚测试的代码,Android似乎可以接受超过1000个字符的SQL查询。如果iPhone不行...那很让人烦恼。 - Magnus Smith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接