Javascript phonegap resultset上的SQLite数据库长度每增加一次

Javascript phonegap resultset上的SQLite数据库长度每增加一次,javascript,android,sqlite,cordova,Javascript,Android,Sqlite,Cordova,我正在使用phonegap开发一个应用程序,并使用数据库作为sqlite。 我使用以下命令创建了一个表: var dbb; var shortName = 'Vaccine1'; var version = '2.0'; var displayName = 'vaccine'; var maxSize = 100000; dbb = window.openDatabase(shortName, version, displayName,maxSize); 并使用此

我正在使用phonegap开发一个应用程序,并使用数据库作为sqlite。 我使用以下命令创建了一个表:

   var dbb;
   var shortName = 'Vaccine1';
   var version = '2.0';
   var displayName = 'vaccine';
   var maxSize = 100000;
dbb = window.openDatabase(shortName, version, displayName,maxSize);
并使用此函数插入值

function AddDBvalues()
{

 dbb.transaction(function(tx){
//tx.executeSql( 'DROP TABLE IF EXISTS Vaccin',nullHandler,nullHandler); 
tx.executeSql( 'CREATE TABLE IF NOT EXISTS Vaccin(Vday INTEGER NOT NULL,VName TEXT NOT NULL, CCountryid INTEGER NOT NULL , Sex TEXT NOT NULL)', [],nullHandler,errorHandler);},errorHandler,successCallBack);
dbb.transaction(function(transaction) {transaction.executeSql('INSERT INTO Vaccin(Vday,VName,CCountryid,Sex) VALUES (?,?,?,?)',["0","BCG","91","both"], nullHandler,errorHandler);});
dbb.transaction(function(transaction) {transaction.executeSql('INSERT INTO Vaccin(Vday,VName,CCountryid,Sex) VALUES (?,?,?,?)',["0","OPV dose 1 of 5","91","both"], nullHandler,errorHandler);});
dbb.transaction(function(transaction) {transaction.executeSql('INSERT INTO Vaccin(Vday,VName,CCountryid,Sex) VALUES (?,?,?,?)',["1","Hepatites B dose 1 of 2","91","both"], nullHandler,errorHandler);});
dbb.transaction(function(transaction) {transaction.executeSql('INSERT INTO Vaccin(Vday,VName,CCountryid,Sex) VALUES (?,?,?,?)',["42","DPT dose 1 of 3","91","both"], nullHandler,errorHandler);});
dbb.transaction(function(transaction) {transaction.executeSql('INSERT INTO Vaccin(Vday,VName,CCountryid,Sex) VALUES (?,?,?,?)',["42","OPV dose 2 of 5","91","both"], nullHandler,errorHandler);});
dbb.transaction(function(transaction) {transaction.executeSql('INSERT INTO Vaccin(Vday,VName,CCountryid,Sex) VALUES (?,?,?,?)',["70","DPT dose 2 of 3","91","both"], nullHandler,errorHandler);});
}
并使用此函数从数据库中获取值

function ShowValue()
{
 var cnn = sessionStorage.getItem('cid');//getting from session 
  var cn=parseInt(cnn);
  alert (cn); //always show correct value
dbb.transaction(
 function (transaction) {
transaction.executeSql("SELECT * from Vaccin WHERE CCountryid='"+cn+"';",[],     dataHandler, errorHandler);});
function dataHandler(transaction, results){
      alert("first method" + results.rows.length);
    for (var i=0; i<results.rows.length; i++) {
      ...... }
}}  
函数ShowValue()
{
var cnn=sessionStorage.getItem('cid');//从会话获取
var cn=parseInt(cnn);
警报(cn);//始终显示正确的值
dbb.transaction(
职能(事务){
executeSql(“从Vaccin中选择*,其中ccuntryid=”“+cn+”;”,[],dataHandler,errorHandler);});
函数dataHandler(事务、结果){
警报(“第一种方法”+结果.行.长度);

对于(var i=0;i是否每次运行应用程序时都会调用AddDBValues?如果不存在,则对insert语句没有影响。

数据库是否在运行之间保持不变?如果是,则数据会加倍,因为您不会删除表。在
AddDBValues()
函数中,
DROP…
命令会被注释掉

//tx.executeSql( 'DROP TABLE IF EXISTS Vaccin',nullHandler,nullHandler); 
不相关,但也可能存在SQL注入漏洞。变量
cn
应作为绑定变量传入,而不是简单地作为字符串添加到SQL中

transaction.executeSql("SELECT * from Vaccin WHERE CCountryid='"+cn+"';",[],     dataHandler, errorHandler);});

是的AddDBValues每次都会被调用。但若我使用“if not EXISTS”,就不应该每次都创建表。我说得对吗??