我尝试创建一个表,然后在其中添加一堆新列。它是由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
答案 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)');
});
}