2012-08-06 4 views
3

phonegap 저장소 데이터베이스에 두 개 이상의 테이블을 만드는 방법은 무엇입니까? 그것은 하나의 테이블에서 잘 작동하지만, 다른 테이블을 만들려고하면 에러 처리 SQL : 1; (phonegap 저장소에 2 개 이상의 테이블 만들기

var db = window.openDatabase("Database", "1.0", "Order database", 1000000); 
    document.addEventListener("deviceready", onDeviceReady, false); 


function onDeviceReady() { 
    db.transaction(populateDB, errorCB, successCB); 
} 




function populateDB(tx) { 

    tx.executeSql('DROP TABLE IF EXISTS ORDER'); 
    tx.executeSql('CREATE TABLE IF NOT EXISTS ORDER (id INTEGER PRIMARY KEY, status)'); 
    tx.executeSql('INSERT INTO ORDER (id, status) VALUES (1, "new")'); 
    tx.executeSql('INSERT INTO ORDER (id, status) VALUES (2, "done")'); 
    tx.executeSql('INSERT INTO ORDER (id, status) VALUES (3, "new")'); 
    tx.executeSql('INSERT INTO ORDER (id, status) VALUES (4, "undone")'); 


    tx.executeSql('DROP TABLE IF EXISTS CLIENT'); 
    tx.executeSql('CREATE TABLE IF NOT EXISTS CLIENT (id INTEGER PRIMARY KEY, name, addr, mail, phone)'); 
    tx.executeSql('INSERT INTO CLIENT (id, name, addr, mail, phone) VALUES (1, "Kentavr", "Kiev", "[email protected]", "044-454-34-34")'); 
    tx.executeSql('INSERT INTO CLIENT (id, name, addr, mail, phone) VALUES (2, "ООО New Step ", "Kiev", "[email protected]", "044-433-222-24")'); 
    tx.executeSql('INSERT INTO CLIENT (id, name, addr, mail, phone) VALUES (3, "NEXT", "Lvov", "[email protected]", "033-1-3434-24")'); 
    tx.executeSql('INSERT INTO CLIENT (id, name, addr, mail, phone) VALUES (4, "Briz", "Lvov", "[email protected]", "033-1-1111-24")'); 
    tx.executeSql('INSERT INTO CLIENT (id, name, addr, mail, phone) VALUES (5, "Brand", "Lvov", "[email protected]", "033-1-1001-24")'); 




} 


function queryDB(tx) { 
     tx.executeSql('SELECT * FROM CLIENT WHERE addr="Lvov" ', [], querySuccess, errorCB); 
} 

답변

2

당신은 SQL 명령의 일부이기 때문에 :), 표를 ORDER를 만들 테이블의 이름을 변경하고 programm에 작동합니다 수 없습니다.

1
Please try like this... 

    var sql1 = 'CREATE TABLE IF NOT EXISTS ORDER (id INTEGER PRIMARY KEY, status)'; 
    tx.executeSql(sql1,[], function (tx, results) { 
     var test = new Array(); 
     test[0]='INSERT INTO ORDER (id, status) VALUES (1, "new")'; 
     test[1]='INSERT INTO ORDER (id, status) VALUES (2, "done")'; 
     test[2]='INSERT INTO ORDER (id, status) VALUES (3, "new")';                 
     for(i in test) { 
      tx.executeSql(test[i]); 
     } 
    }); 

var sql2 = 'CREATE TABLE IF NOT EXISTS CLIENT (id INTEGER PRIMARY KEY, name, addr, mail, phone)'; 
    tx.executeSql(sql2,[], function (tx, results) { 
     var test2 = new Array(); 
     test2[0]='INSERT INTO CLIENT (id, name, addr, mail, phone) VALUES (1, "Kentavr", "Kiev", "[email protected]", "044-454-34-34")'; 
     test2[1]='INSERT INTO CLIENT (id, name, addr, mail, phone) VALUES (1, "Kentavr", "Kiev", "[email protected]", "044-454-34-34")'; 
     test2[2]='INSERT INTO CLIENT (id, name, addr, mail, phone) VALUES (1, "Kentavr", "Kiev", "[email protected]", "044-454-34-34")';               
     for(i in test2) { 
      tx.executeSql(test2[i]);  
     } 
    }); 
+2

내 바보 같은 실수는 내가 예약어 '주문'을 사용했다는 것이 었습니다. 정말 바보 같아. 기분이 좋지 않아 .C – MasterMind

+0

내 바보 같은 실수는 내가 예약어 '주문'을 사용했다는 것이었다. 정말 바보 같아. 기분이 좋지 않아 .C : – MasterMind

+0

오 .. 그래, 나는 그걸 놓쳤다. 그리고 가장 좋은 방법은 항상 콜백 함수를 사용하는 것입니다. – JDev

관련 문제