0

phonegap を使用して電話データベースにアクセスしています。しかし、私の作成プロセスは毎回、エラー コード: 5 とメッセージ: non an error?でエラー ルーチンを呼び出します。

1 つのトランザクションで複数の SQL ステートメントを実行することはできませんか?

SQLite Expert は構文エラーを見つけることができませんでした...

createDB: function(error, success) {
        if(typeof error != 'function') error = this.errorDB;
        if(typeof success != 'function') success = this.successDB;
        sql = "DROP TABLE IF EXISTS `boiler`; "
            +"CREATE TABLE IF NOT EXISTS `boiler` ( "
            +" `id` int NOT NULL, `object` int NOT NULL, `number` varchar(100) NOT NULL, "
            +" `volume` double DEFAULT NULL, `brand` varchar(100) DEFAULT NULL, `year` year(4) DEFAULT NULL, "
            +" `price_before` float NOT NULL DEFAULT '0', `price_after` float NOT NULL DEFAULT '0',  `description` TEXT DEFAULT NULL, "
            +" `img1` varchar(200) DEFAULT NULL, `img2` varchar(200) DEFAULT NULL, `img3` varchar(200) DEFAULT NULL, "
            +" `img4` varchar(200) DEFAULT NULL, `img5` varchar(200) DEFAULT NULL,  `img6` varchar(200) DEFAULT NULL, "
            +" `img7` varchar(200) DEFAULT NULL, `img8` varchar(200) DEFAULT NULL, `img9` varchar(200) DEFAULT NULL, "
            +"PRIMARY KEY (`id`)); "

            +"DROP TABLE IF EXISTS `counter`; "
            +"CREATE TABLE IF NOT EXISTS `counter` ( "
            +" `number` varchar(100) NOT NULL, `object` int NOT NULL, `type` tinyint NOT NULL DEFAULT '0', "
            +" `value` double DEFAULT NULL, `access` varchar(100) DEFAULT NULL, "
            +"PRIMARY KEY (`number`)); "

            +"DROP TABLE IF EXISTS `link`; "
            +"CREATE TABLE IF NOT EXISTS `link` ( "
            +" `id` int NOT NULL, `boiler` int NOT NULL, `name` varchar(100) DEFAULT NULL, "
            +" `units` tinyint DEFAULT NULL, `price` float NOT NULL DEFAULT '0', "
            +"PRIMARY KEY (`id`)); "

            +"DROP TABLE IF EXISTS `manager`; "
            +"CREATE TABLE IF NOT EXISTS `manager` ( "
            +" `id` int NOT NULL, `company` varchar(100) DEFAULT NULL, `name` varchar(100) NOT NULL, "
            +" `phone` varchar(15) DEFAULT NULL, "
            +"PRIMARY KEY (`id`)); "

            +"DROP TABLE IF EXISTS `object`; "
            +"CREATE TABLE IF NOT EXISTS `object` ( "
            +" `id` int NOT NULL,  `state` tinyint NOT NULL DEFAULT '0', `user` varchar(50) DEFAULT NULL, "
            +" `date` char(15) DEFAULT NULL,  `street` varchar(100) DEFAULT NULL, `number` varchar(16) DEFAULT NULL, "
            +" `zip` char(5) DEFAULT NULL, `city` varchar(100) DEFAULT NULL, `manager` int NOT NULL DEFAULT '0', "
            +" `units` int NOT NULL DEFAULT '0', "
            +"PRIMARY KEY (`id`));";
        console.log(sql);
        this.DB.transaction(function (tx) { tx.executeSql(sql); }, error, success);
    },
4

2 に答える 2

1

エラー コード: 5 はわかりませんが、複数の SQL ステートメントを実行できます

         // Wait for PhoneGap to load

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

            // PhoneGap is ready

            function onDeviceReady() {
                var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
                db.transaction(populateDB, errorCB, successCB);
            }

            // Populate the database 

            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")');
        //here you can do  multiple sql statements.
            }

            // Transaction error callback

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

            // Transaction success callback

            function successCB() {
                alert("success!");
            }

ここにリンク

于 2012-06-05T10:00:32.440 に答える
0

ファイル エクスプローラーからデータベースを確認してください

4つの値を入力しているように、テーブルの作成にのみ問題がありますが、テーブルには3つの列しかないため、このエラーが発生します

tx.executeSql("CREATE TABLE IF NOT EXISTS quotes(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,name,flag INTEGER,address,description,phone_number,date INTEGER,quote_number,job,images)");

エラーは、flar のように var 型の値の代わりに整数値を直接割り当てている場合に発生します。1 または 0 を使用していますが、現在はこの値を var 型に格納しています。

于 2012-12-24T06:14:18.990 に答える