4

我想在我的表中添加一列。任何人都可以告诉我如何在 Table 中添加列,如果它在 sqlite 更新整个 sqlite 数据库中不存在?

if COLUMNPROPERTY( OBJECT_ID('Customers'),'CLable','Text') is null 
    begin 
        alter table Customers add CLable varchar(50) not null 
    end
4

3 回答 3

4

没有足够的声誉将其添加为上面的评论,但是...

ALTER TABLE Name ADD COLUMN new_column INTEGER DEFAULT 0

将在 prepare() 步骤中生成错误(不是 SQLITE_OK)——所以忽略它并且不要执行 step():

sqlite3_stmt *stmt;
if (sqlite3_prepare_v2(database, [self.sql UTF8String], -1, &stmt, nil) == SQLITE_OK) {
    sqlite3_step(stmt);
}
sqlite3_finalize(stmt);
于 2014-04-14T17:25:18.560 回答
2

在 SQLite 中,您无法使用IF NOT EXISTS...检查列是否存在

您可以简单地检查SELECT col from TABLE如果它返回错误则列不存在。

或者您可以在应用程序委托中使用标志,例如

if(![[NSUserDefaults standardUserDefaults] boolForKey:@"isColumnAdded"]) {

    //call the query like ALTER TABLE tableName ADD COLUMN columnName TEXT;
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"isColumnAdded"];
    [[NSUserDefaults standardUserDefaults] synchronize]
}
于 2013-04-22T12:24:18.780 回答
-4

试试这样,通过使用 ALTER 命令你可以实现这个,

ALTER TABLE Name ADD COLUMN new_column INTEGER DEFAULT 0
于 2013-04-22T11:21:36.193 回答