1

テーブルを作成してから、新しい列を追加しようとしました。これはJavascriptによって実装されました(使用されるデータベースはwebsqlのSQLiteだと思います):

var FFFNames = ["DEFAULTY", "LAGACY", "MATADATA"];

db.transaction(function (tx){
    tx.executeSql('CREATE TABLE IF NOT EXISTS ProjSetsT (ProjId unique)');
});

for (var i = 0; i < FFFNames.length; i++){
    db.transaction(function (tx){
        tx.executeSql('ALTER TABLE ProjSetsT ADD ? TINYINT(1)', FFFNames[i]);
    });
}

まあそれはうまくいきませんでした。テーブルは作成されましたが、列は追加されていません。ALTERで疑問符は許可されていますか、それとも何か問題がありますか?

[9月20日に更新]:「ALTERTABLE tablename ADD COLUMN?datatype」などの別の構文を試しましたが、それでも機能しません。

私もこのようなコードを試しました:

db.transaction(function (tx){
    tx.executeSql('ALTER TABLE ProjSetsT ADD COLUMN ? TINYINT(1)', "TEST");
});

警告はありませんが、機能しません。

私も試しました:

var AAA = "TEST";
db.transaction(function (tx){
    tx.executeSql('ALTER TABLE ProjSetsT ADD COLUMN ? TINYINT(1)', AAA);
});

今回はエラーが発生しました:

キャッチされないエラー:TYPE_MISMATCH_ERR:DOM例外17

4

1 に答える 1

0

それはALTERTABLE...ADDCOLUMNです。また、2番目のパラメーターは配列でなければなりません。

for (var i = 0; i < FFFNames.length; i++){
    db.transaction(function (tx){
        tx.executeSql('ALTER TABLE ProjSetsT ADD COLUMN ? TINYINT(1)', [FFFNames[i]]);
    });
}

(更新):どうやら、各列名がとして扱われ、エラーが発生するため、上記のクエリは機能しないようです。'text'これは、そのクエリを機能させるためにできることです。

for (var i = 0; i < FFFNames.length; i++){
    db.transaction(function (tx){
        tx.executeSql('ALTER TABLE ProjSetsT ADD COLUMN '+FFFNames[i]+' TINYINT(1)');
    });
}
于 2012-09-19T15:41:51.010 に答える