【发布时间】:2013-08-15 05:17:23
【问题描述】:
我正在调用此函数并首先删除所有数据,然后将更新的值插入其中。但是有些如何从数据库中删除所有表。它总是显示代码中的alertview。不确定我错了什么。任何帮助都会得到重视。谢谢。。
-(void)fillDate
{
filemgr=[NSFileManager defaultManager];
NSString *querySQL = @"delete from getdate";
const char *dbpath = [[appDelegate getDBPath] UTF8String];
//NSLog(@"path= %@",dbpath);
BOOL flag=FALSE;
if (sqlite3_open(dbpath, &dtdb) == SQLITE_OK)
{
//"open";
const char *query_stmt = [querySQL UTF8String];
sqlite3_prepare_v2(dtdb,query_stmt,-1,&statement,NULL);
if (sqlite3_step(statement)==SQLITE_DONE)
{
//table deleted
flag=TRUE;
}
else
{
UIAlertView *d=[[UIAlertView alloc]initWithTitle:@"Message" message:@"Your Table does not deleted" delegate:self cancelButtonTitle:@"ok" otherButtonTitles: nil];
[d show];
flag=FALSE;
}
}
else
{
//"can't open";
}
sqlite3_close(dtdb);
sqlite3_finalize(statement);
if (flag)
{
sqlite3_stmt *stmt;
const char *cdbpath=[[appDelegate getDBPath] UTF8String];
if ((sqlite3_open(cdbpath,&dtdb)==SQLITE_OK))
{
char* errorMessage;
sqlite3_exec(dtdb, "BEGIN TRANSACTION", NULL, NULL, &errorMessage);
char buffer[] = "INSERT INTO getdate(lastdate) VALUES (?1)";
sqlite3_prepare_v2(dtdb, buffer, strlen(buffer), &stmt, NULL);
// for (unsigned i = 0; i < 1; i++)
// {
// NSMutableDictionary *dict=[arrayAllEvents objectAtIndex:i];
//NSLog(@"dict:%@",dict);
sqlite3_bind_text(stmt, 1, [[df stringFromDate:[NSDate date]]UTF8String], -1, SQLITE_STATIC);
int success = sqlite3_step(stmt);
sqlite3_reset(stmt);
if (success != SQLITE_DONE)
{
//nslog(@"error: %s",sqlite3_errmsg(dtdb));
}
//nslog(@"... data created.");
// }///for
if(sqlite3_exec(dtdb, "COMMIT TRANSACTION", NULL, NULL, &errorMessage)==SQLITE_OK)
{
NSLog(@"commited Events");
}
else
{
NSLog(@"Not commited");
}
// sqlite3_exec(dtdb, "COMMIT TRANSACTION", NULL, NULL, &errorMessage);
sqlite3_finalize(stmt);
}//
}
sqlite3_close(dtdb);
}
【问题讨论】:
-
你更新过sqlite数据库吗??如果更新从模拟器中删除应用程序并再次运行..
-
@wasim 我认为当 sqlite3_step(statement) 在第 17 行时,U 应该生成代码。它会帮助你sqlite.org/c3ref/c_abort.html