2014-11-14 59 views
-3
dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
docsDir = [dirPaths objectAtIndex:0]; 
databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent:@"contact.db"]]; 

NSFileManager *filemgr = [NSFileManager defaultManager]; 
if ([filemgr fileExistsAtPath:databasePath]== NO) 
{ 
    const char *dbpath = [self.databasePath UTF8String]; 
    if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK)   
    {   
     char *errMsg; 
     const char *sql_stmt = "CREATE TABLE IF NOT EXISTS PERSON (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, PASSWORD TEXT,EMAIL TEXT)" ; 

    if (sqlite3_exec(contactDB, sql_stmt, NULL, NULL, &errMsg) != SQLITE_OK){ 
     theStatus.text = @" FAILED TO Table created"; 
    } 
    sqlite3_close(contactDB); 

} else { 
    theStatus.text = @"Failed to OPEN/create database"; 
}} 
[filemgr release]; 

我使用上面的代碼,我已經嘗試過sqlite3_open_v2但我堅持的問題。我有一個錯誤「內存不足的錯誤:」我已經嘗試了所有的解決方案,但我堅持這個錯誤

請幫忙。

+0

那麼,當您逐步完成上述代碼時,它會在哪裏失敗? – 2014-11-14 13:15:21

+0

([filemgr fileExistsAtPath:databasePath] == NO)在此陳述中失敗 – 2014-11-14 13:16:40

+0

請引用EXACT錯誤消息,並且還獲取幷包含異常堆棧跟蹤。如果你不知道如何獲得異常堆棧跟蹤,請學習如何。 – 2014-11-14 13:31:07

回答

0

有兩種情況你遇到內存不足錯誤如果你忽略打開數據庫或者如果使用的數據庫引用似乎爲零。

請把休息指針在下面的代碼行

if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK) 

,如果塊被執行,如果沒有,那麼你知道的罪魁禍首,如果上面的檢查。

+0

沒有出現同樣的錯誤,我已經使用過您的推薦 – 2014-11-14 13:06:20

+0

if區塊是否被執行? – ldindu 2014-11-14 13:08:04

+0

if(sqlite3_open(dbpath,&contactDB)== SQLITE_OK) – 2014-11-14 13:08:55

相關問題