2014-02-18 41 views
0

我在創建sqlite3表時出現問題,我在代碼中創建了數據庫,但它給出了一個錯誤:'NSInternalInconsistencyException',原因:'無法創建表'sqlite3表創建錯誤'NSInternalInconsistencyException'

我試圖檢查代碼來查找錯誤,但找不到任何錯誤。 這裏是一些代碼。

-(NSString *)filePath 
{ 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES); 
    return [[paths objectAtIndex:0] stringByAppendingString:@"dbfile.sql"]; 
} 


-(void)openDB 
{ 
    if (sqlite3_open([[self filePath]UTF8String], &db) != SQLITE_OK) 
    { 
     sqlite3_close(db); 
     NSAssert(0,@"Database Failed to Open"); 
    }else{ 
     NSLog(@"Database Opened !"); 
    } 
} 

-(void)createTable:(NSString *)tableName 
     withField1:(NSString *)field1 
     withField2:(NSString *)field2 
     withField3:(NSString *)field3 
     withField4:(NSString *)field4 
{ 
    char *err; 
    NSString *sql = [NSString stringWithFormat: 
        @"CREATE TABLE IF NOT EXIST '%@' ('%@'TEXT PRIMARY KEY, '%@' INTEGER, '%@' INTEGER, '%@' TEXT);",tableName,field1,field2,field3,field4]; 
    if (sqlite3_exec(db, [sql UTF8String], NULL, NULL, &err) != SQLITE_OK) 
    { 
     sqlite3_close(db); 
     NSAssert(0,@"Could not create table"); 
    }else{ 
     NSLog(@"Table Created"); 
    } 
} 

和我導入sqlite3.h但每次我運行它崩潰模擬器,給了我這個錯誤。

請幫助我,謝謝。

+0

嘗試重新導入您的數據庫文件 –

+0

我在代碼中創建數據庫 – faisal60

+0

不。您不是從上面顯示的代碼創建數據庫。如果你沒有包含數據庫創建代碼,請確保你的數據庫存在於路徑中。 –

回答

0

副本再次DB在Xcode和查看以下鏈接複製數據庫到iOS:

link 1

,比嘗試創建tabels

-1
-(NSString *)filePath 
{ 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES); 
    return [[paths objectAtIndex:0] stringByAppendingString:@"/dbfile.sql"]; 
} 

的路徑是不正確的

+0

您正在複製粘貼OP代碼作爲答案。要對代碼中的內容發表評論,請考慮發佈評論。 – Amar