如何使用JavaScript创建多个SQlite表?

如何使用JavaScript创建多个SQlite表?,javascript,database,function,sqlite,cordova,Javascript,Database,Function,Sqlite,Cordova,到目前为止,在我的应用程序开发(phonegap/JQuery Mobile)中,我已经设置了一个数据库并创建了一个表,我已经实现了一些与表交互的功能,用于不同的事件,例如用户注册 但是,我需要在同一个数据库中创建另一个表,但是我不确定如何执行此操作 我试图创建另一个函数(createEvent(tx){),该函数创建一个表,但该表不起作用 请参阅下面我的javascript,它构建数据库并使用创建表 document.addEventListener("deviceready", onDe

到目前为止,在我的应用程序开发(phonegap/JQuery Mobile)中,我已经设置了一个数据库并创建了一个表,我已经实现了一些与表交互的功能,用于不同的事件,例如用户注册

但是,我需要在同一个数据库中创建另一个表,但是我不确定如何执行此操作

我试图创建另一个函数(createEvent(tx){),该函数创建一个表,但该表不起作用

请参阅下面我的javascript,它构建数据库并使用创建表

  document.addEventListener("deviceready", onDeviceReady, false);

                     var db;
                     function onDeviceReady() {
                         db = window.openDatabase("SoccerEarth", "2.0", "SoccerEarthDB", 2*1024*1024);
                         db.transaction(createDB, createEvents, errorCB, successCB);

                     }
                     function createDB(tx) {
                         tx.executeSql('CREATE TABLE IF NOT EXISTS SoccerEarth (UserName text, FirstName text, LastName text, Email text, Password text, CPass text)');

                     }
                     function createEvents(tx) {
                     tx.execute2('CREATE TABLE IF NOT EXISTS SoccerEvents (Title text, Location text, NoPeople text, Date text, Description text)');
                                              }

                     function errorCB(err) {
                         alert("Error processing SQL: "+err.code);
                     }

                     function successCB() {
                  alert("Database Ready!");
                     }

为了简单起见,我会这样做:

db.transaction(function (tx) {            
tx.executeSql('CREATE TABLE IF NOT EXISTS SoccerEarth (UserName text, FirstName text, LastName text, Email text, Password text, CPass text)');
tx.executeSql('CREATE TABLE IF NOT EXISTS SoccerEvents (Title text, Location text, NoPeople text, Date text, Description text)');
 }, errorCB, successCB);

您可以将SQL语句作为字符串数组传递,并执行数组中的每条语句

var sql = [ "CREATE TABLE IF NOT EXISTS LEAD (ID VARCHAR(35) PRIMARY KEY NOT NULL, PROCESS VARCHAR (32), VERSION VARCHAR (8), CREATED_BY VARCHAR (128), CREATED_ON VARCHAR (32), RECIPIENT VARCHAR (32), STATUS VARCHAR (8))",
         "CREATE TABLE IF NOT EXISTS DOCUMENT (ID INTEGER PRIMARY KEY AUTOINCREMENT, LEAD_ID VARCHAR(35) REFERENCES LEAD (ID) NOT NULL, NAME VARCHAR (255) NOT NULL, TYPE VARCHAR (32) NOT NULL, CONTENT BLOB NOT NULL, RETRY INTEGER NOT NULL, STATUS VARCHAR (8))",
         "CREATE TABLE IF NOT EXISTS FUNDATA(ID INTEGER PRIMARY KEY AUTOINCREMENT, FUN_ID INTEGER REFERENCES LEAD (ID), NAME VARCHAR(128) NOT NULL, VALUE VARCHAR (255) NOT NULL)"  ];
现在将所有sql传递给要执行的函数,同时也传递数据库对象。 回调可以是任何其他函数

function write(database, sql){
    this.sql = sql;
    database.transaction(
      function(tx){
      for(var i=0; i<this.sql.length; i++){
      console.log("execute sql : " + this.sql[i]);
      tx.executeSql(this.sql[i]);
    }    
      },function(error){
    console.log("error call back : " + JSON.stringify(error));
    console.log(error);
  },
     function(){
    console.log("transaction complete call back ");
  }
    );  
  }
函数写入(数据库、sql){
this.sql=sql;
数据库事务(
功能(tx){

对于(var i=0;iThanks,我发现了我的错误。我意外地为第二个表键入了execute2而不是executeSql。@Mahdi如果回答了您的问题,请接受这个作为答案。我知道它回答了我的问题:)。@KendallRoth Done:)