2012-10-21 72 views
0

所以我是XCode的新手,我想使用Sqlite3將數據存儲在數據庫中。我有一個班級用戶,我有這種方法。創建和打開數據庫xCode 4.5

-(void)createOrOpenDB 
{ 
    NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *docPath = [path objectAtIndex:0]; 
    dbPathString = [docPath stringByAppendingPathComponent:@"users.db"]; 
    char *error; 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    if([fileManager fileExistsAtPath:dbPathString] == NO) 
    { 
     const char *dbPath = [dbPathString UTF8String]; 
     if(sqlite3_open(dbPath, &userDB)==SQLITE_OK) 
     { 
      const char *sql_stmt = "CREATE TABLE IF NOT EXISTS USERS (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, PASSWORD TEXT, CONFIRM TEXT, EMAIL TEXT)"; 
      sqlite3_exec(userDB, sql_stmt, NULL, NULL, &error); 
      sqlite3_close(userDB); 
     } 
    } 
} 

但我還有另一個類,我想創建另一個表。但它不會工作,因爲這種方法說數據庫已經存在。

如何才能在另一個類中打開該數據庫以創建一個新表?

+1

你有沒有想過使用CoreData?我使用過SQL數據庫,我可以說使用CoreData可以讓你的代碼更清潔,並且可以看到你的數據庫實體的可視化。繼承人一個很好的教程,如果您感興趣:http://www.raywenderlich.com/934/core-data-on-ios-5-tutorial-getting-started – RyanG

+0

謝謝:)我會檢查這是否可以幫助我:) –

+0

如果數據庫已經存在,什麼問題?簡單地使用它。您應該創建一個處理所有類的數據庫訪問的單個實例。 –

回答

0

假設你留在sqlite中,最好使用打開或創建數據庫的單個方法。如果創建了數據庫,則會一次創建整個模式。現在所有的類都可以調用單一方法。

這會讓現在和以後的事情變得更容易。有時候你的計劃可能會改變。也可以編寫這一個方法來根據需要更新模式。