基本上我必须在数据库中输入所有文本字段值,然后必须用于发送到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);
}
但发送后不会删除。为什么不打电话? 给我一些想法..
答案 0 :(得分:1)
我很可能不能正确理解你的问题 - 所以如果是这样我会提前道歉。
关于:" ...然后必须删除该列。"
- 如果要清除列中的数据(通过将其设置为零,或清空字符串或NULL),那么您将要在SQL中使用UPDATE命令。 DELETE命令总是删除ROWS。
- 如果你真的必须从表的架构中删除一个列,你必须在sqlite中创建一个新表。 (Sqlite允许您通过ALTER TABLE命令添加列,而其他一些数据库也允许您使用ALTER TABLE删除列。)您可以通过例如快速复制表(没有它的约束等) :
从MyOriginal创建表格MyOutput作为SELECT a,b,d,f,h,z;
- 如果您的输出是由SELECT语句创建的,请避免使用" *"并只指定要包含的列。