所以我使用此页面中的指南在我的手机间隙项目中创建了一个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或者其他什么东西?
答案 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")');
}
我从不删除该行,我只是删除或插入//作为在两种测试模式之间来回切换的快速而肮脏的方式。对于制作,我会留在注释掉的行中,但如果您愿意,可以将其删除。