Ios SQLite数据库删除了所有表

Ios SQLite数据库删除了所有表,ios,iphone,xcode,sqlite,Ios,Iphone,Xcode,Sqlite,我调用这个函数,首先删除所有数据,然后在其中插入更新的值。但是有些人知道如何从数据库中删除所有表。它总是显示代码中的alertview。不确定我错了什么。欢迎提供任何帮助。谢谢 -(void)fillDate { filemgr=[NSFileManager defaultManager]; NSString *querySQL = @"delete from getdate"; const char *dbpath = [[appDelegate getDBPath] UTF8St

我调用这个函数,首先删除所有数据,然后在其中插入更新的值。但是有些人知道如何从数据库中删除所有表。它总是显示代码中的
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);


}
-(作废)填写日期
{
filemgr=[NSFileManager defaultManager];
NSString*querySQL=@“从getdate删除”;
const char*dbpath=[[appDelegate getDBPath]UTF8String];
//NSLog(@“path=%@”,dbpath);
布尔标志=假;
if(sqlite3\u打开(dbpath,&dtdb)==SQLITE\u正常)
{
//“开放”;
const char*query_stmt=[querySQL UTF8String];
sqlite3\u prepare\u v2(dtdb,查询stmt,-1,&语句,NULL);
if(sqlite3\u步骤(语句)==SQLITE\u完成)
{
//删除表
flag=TRUE;
}
其他的
{
UIAlertView*d=[[UIAlertView alloc]initWithTitle:@“消息”消息:@“您的表未删除”委托:自取消按钮:@“确定”其他按钮:无];
[d show];
flag=FALSE;
}
}
其他的
{
//“无法打开”;
}
sqlite3_关闭(dtdb);
sqlite3_最终确定(声明);
国际单项体育联合会(旗)
{
sqlite3_stmt*stmt;
const char*cdbpath=[[appDelegate getDBPath]UTF8String];
if((sqlite3_打开(cdbpath和dtdb)==SQLITE_正常))
{
字符*错误消息;
sqlite3_exec(dtdb,“开始事务”、NULL、NULL和errorMessage);
char buffer[]=“插入getdate(lastdate)值(?1)”;
sqlite3_prepare_v2(dtdb、缓冲区、strlen(缓冲区)和stmt、NULL);
//for(无符号i=0;i<1;i++)
// {
//NSMutableDictionary*dict=[arrayAllEvents对象索引:i];
//NSLog(@“dict:%@”,dict);
sqlite3_bind_text(stmt,1,[[df stringFromDate:[NSDate date]]UTF8String],-1,SQLITE_STATIC);
int success=sqlite3_步骤(stmt);
sqlite3_重置(stmt);
如果(成功!=SQLITE_完成)
{
//nslog(@“错误:%s”,sqlite3_errmsg(dtdb));
}
//nslog(@“…数据已创建”);
//}///用于
if(sqlite3_exec(dtdb,“提交事务”,NULL,NULL和errorMessage)==SQLITE_OK)
{
NSLog(“提交的事件”);
}
其他的
{
NSLog(“未提交”);
}
//sqlite3_exec(dtdb,“提交事务”、NULL、NULL和errorMessage);
sqlite3_最终确定(stmt);
}//
}
sqlite3_关闭(dtdb);
}

如果已更新数据库,则只需将新数据库替换为旧数据库。删除该应用程序,然后重新运行。您的代码似乎很完美。

您更新过sqlite数据库吗??若从模拟器中删除应用程序并再次运行…@wasim,我认为当sqlite3_步骤(语句)出现在第17行时,应该生成代码。它会帮助你的