0

我正在调用此函数并首先删除所有数据,然后在其中插入更新的值。但是有些如何从数据库中删除所有表。它总是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);


}
4

1 回答 1

2

如果您已更新数据库,则只需将新数据库替换为旧数据库即可。删除应用程序并再次运行。您的代码似乎很完美。

于 2013-11-08T10:04:10.497 回答