从Sqlite数据库中删除列

时间:2012-06-14 09:16:17

标签: objective-c sqlite sql-delete

基本上我必须在数据库中输入所有文本字段值,然后必须用于发送到webservice。因此,当一列详细信息发送到服务时,则必须删除该列。 我这样做了:

-(void)deleteTableDataFromSavedDataTable:(NSString *)lastID {
    NSString *sql_str=[NSString stringWithFormat:@"DELETE FROM FormInfoValues where Phone = %@",lastID];

    const char *sql = [sql_str UTF8String];

    if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK)
    {
        NSLog(@"sql delete statement is ");

        sqlite3_stmt *deleteStmt;
        if(sqlite3_prepare_v2(database, sql, -1, &deleteStmt, NULL) == SQLITE_OK)
        {
            NSLog(@"sql delete statement is %@", deleteStmt);
            if(sqlite3_step(deleteStmt) != SQLITE_DONE )
            {
                NSLog( @"Error: %s", sqlite3_errmsg(database) );
            }
            else
            {
                NSLog( @"row id = %lld", (sqlite3_last_insert_rowid(database)+1));
                NSLog(@"No Error");
            }
        }
        sqlite3_finalize(deleteStmt);
    }
    sqlite3_close(database);
}

但发送后不会删除。为什么不打电话? 给我一些想法..

1 个答案:

答案 0 :(得分:1)

我很可能不能正确理解你的问题 - 所以如果是这样我会提前道歉。

关于:" ...然后必须删除该列。"

- 如果要清除列中的数据(通过将其设置为零,或清空字符串或NULL),那么您将要在SQL中使用UPDATE命令。 DELETE命令总是删除ROWS。

- 如果你真的必须从表的架构中删除一个列,你必须在sqlite中创建一个新表。 (Sqlite允许您通过ALTER TABLE命令添加列,而其他一些数据库也允许您使用ALTER TABLE删除列。)您可以通过例如快速复制表(没有它的约束等) :

从MyOriginal创建表格MyOutput作为SELECT a,b,d,f,h,z;

- 如果您的输出是由SELECT语句创建的,请避免使用" *"并只指定要包含的列。