有关如何在phonegap中设置sqlite DB的说明

时间:2012-04-05 11:15:07

标签: javascript sqlite cordova

所以我使用此页面中的指南在我的手机间隙项目中创建了一个SQLite数据库:http://docs.phonegap.com/en/1.5.0/phonegap_storage_storage.md.html#Storage

我只有一个关于用数据填充数据库的函数的问题。

    function populateDB(tx) {
      tx.executeSql('DROP TABLE IF EXISTS DEMO');
      tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
      tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
      tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
  }

在此函数的顶部,它会删除表DEMO,然后每次运行应用程序时再次创建。 这意味着它会创建一个新表并每次填充它,因为在上面的句子中删除表时表被删除了吗?!

每次打开应用程序时删除和添加数据有什么意义,这不会为设备创建不必要的工作吗? 是不是只能删除“DROP TABLE IF EXISTS DEMO” 并且只使用“DROP TABLE IF EXISTS DEMO”?

如果我不在顶部“删除表”,这是否意味着它每次都会添加复制数据?那么如果表已经存在,我需要一个if-sentence或者其他什么东西?

2 个答案:

答案 0 :(得分:2)

这只是一个例子,它并不意味着做任何聪明甚至合乎逻辑的事情。你应该能够在没有任何准备的情况下运行它,以及它的作用。

答案 1 :(得分:0)

我总是使用类似的东西。在开发过程中,您提供的代码允许从头开始测试用户。然后,当准备测试返回的用户时,我会注释掉第二行,如下所示:

function populateDB(tx) {
    //tx.executeSql('DROP TABLE IF EXISTS DEMO');   // Uncomment to test from scratch, comment for production!
    tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
    tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
    tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
}

我从不删除该行,我只是删除或插入//作为在两种测试模式之间来回切换的快速而肮脏的方式。对于制作,我会留在注释掉的行中,但如果您愿意,可以将其删除。