我可以在ALTER查询中使用问号吗?

时间:2012-09-19 15:25:19

标签: javascript sql html5 web-sql alter

我尝试创建一个表,然后在其中添加一堆新列。它是由Javascript实现的(我认为使用的数据库是website中的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日更新] :我尝试了不同的语法,例如“ALTER TABLE 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

1 个答案:

答案 0 :(得分:0)

这是ALTER TABLE ... ADD COLUMN。此外,第二个参数必须是数组。

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)');
    });
}