2015-02-08 11 views
0

我正在使用sqllite3作为本地数据库来存储一些数据,在objective-c中开发iOS应用程序。我试图用相同的数据库路径使用多个表,但它不允许我这样做。例如,如果我尝试在同一个DB {db数据库路径作为DB1}中创建多个表,则不会创建第二个表。如何使用相同的数据库路径在iOS中使用SQLite创建多个表?

但是,如果我尝试在不同的数据库路径中创建不同的表,那么它的功能正常。例如:数据库路径为表1中的DB1,表格2中的DB2等。

这里是我的代码:

语句来创建表:

-(int) createTable 
{ 

    sqlite3* db = NULL; 
      int rc=0; 

      rc = sqlite3_open_v2([[self getDbFilePath] cStringUsingEncoding:NSUTF8StringEncoding], &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); 
      if (SQLITE_OK != rc) 
      { 
       sqlite3_close(db); 
       NSLog(@"Failed to open db connection"); 
      } 
      else 
      { 

      char * query ="CREATE TABLE IF NOT EXISTS userinfo (id INTEGER PRIMARY KEY AUTOINCREMENT, selfuser TEXT, pic TEXT, name TEXT, gender TEXT, link TEXT)"; 
       char * errMsg; 
       rc = sqlite3_exec(db, query,NULL,NULL,&errMsg); 

       if(SQLITE_OK != rc) 
       { 
        NSLog(@"Failed to create table rc:%d, msg=%s",rc,errMsg); 
       } 

       sqlite3_close(db); 

      query = "CREATE TABLE IF NOT EXISTS EVENTS (id INTEGER PRIMARY KEY AUTOINCREMENT, id TEXT, info TEXT, date TEXT, no TEXT, name TEXT, time TEXT,userid TEXT, aName TEXT, day TEXT, FirstName TEXT, Pic TEXT,Accepted TEXT,rank TEXT);"; 

     rc = sqlite3_exec(db, query,NULL,NULL,&errMsg); 
       if(SQLITE_OK != rc) 
       { 
        NSLog(@"Failed to create table rc:%d, msg=%s",rc,errMsg); 
       } 
     sqlite3_close(db); 
     } 
       return rc; 
    } 

帮助非常感谢,谢谢提前!

回答

0

SQLite不允许在第一次之后一起运行多个查询语句;它不会尝试运行SQLite查询编辑器。为了运行多个语句,必须运行可能会执行的命令。

试试这个方法:

为const char *查询= “CREATE TABLE IF NOT EXISTS \” 用户\ “(\ ”ID \“ INTEGER PRIMARY KEY AUTOINCREMENT,\ ”selfuserid \“ TEXT,\” profilepic \ “TEXT,\”username \“TEXT,\”gender \“TEXT,\”profilelink \“TEXT);”

char * errMsg; 
rc = sqlite3_exec(db, query,NULL,NULL,&errMsg); 
if(SQLITE_OK != rc) 
{ 
    NSLog(@"Failed to create table rc:%d, msg=%s",rc,errMsg); 
} 

query = "CREATE TABLE IF NOT EXISTS \"events\" (\"id\" INTEGER PRIMARY KEY AUTOINCREMENT, \"id\" TEXT, \"info\" TEXT, \"date\" TEXT, \"players\" TEXT, \"name\" TEXT, \"time\" TEXT, \"userid\" TEXT, \"area\" TEXT, \"day\" TEXT, \"Name\" TEXT, \"Pic\" TEXT, \"total\" TEXT, \"rank\" TEXT);"; 

rc = sqlite3_exec(db, query,NULL,NULL,&errMsg); 
if(SQLITE_OK != rc) 
{ 
    NSLog(@"Failed to create table rc:%d, msg=%s",rc,errMsg); 
} 
sqlite3_close(db); 
+0

感谢您的快速回复,我将在应用此更新后为您更新。 – Daljeet 2015-02-08 10:41:40

+0

试试看我没有编译我刚刚在我的手机上输入的代码 – Shashi3456643 2015-02-08 10:45:44

+0

它无法正常工作给出的错误未能打开数据库。 – Daljeet 2015-02-08 16:27:43

相关问题