2011-05-05 121 views
3

我正在使用FMDB創建並向d/b添加記錄。創建d/b的方法是:SQLite:數據庫錯誤,「內存不足」

//----------------------- checkIfDatabaseExists -----------------| 
+ (void) openCreateDB { 

    NSArray *searchPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); // Get the path to the database file 
    NSString *documentPath = [searchPaths objectAtIndex:0]; 
    NSString *databasePath = [documentPath stringByAppendingPathComponent:@"ppcipher.s3db"]; 
    NSLog(@"d/b path: /%@", databasePath); 

    char * errmsg = nil; 

    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    [fileManager removeItemAtPath:databasePath error:NULL]; // <------------ delete d/b TESTING ONLY! 

    BOOL fileExists = [fileManager fileExistsAtPath:databasePath]; 
    if(!fileExists) { 
     FMDatabase* _db = [FMDatabase databaseWithPath: databasePath]; 

     if (![_db open]) { 
      NSLog(@"Could not open/create database"); 
     } 

     [_db executeUpdate:@"CREATE TABLE CardData (card_id TEXT PRIMARY KEY NOT NULL, card_name TEXT NOT NULL, " 
     @"card_type TEXT, code_val TEXT, create_date TEXT DEFAULT CURRENT_DATE, user_notes TEXT, gps_loc TEXT)"]; 

     if(errmsg != nil) 
      NSLog(@"error: %s", errmsg); // DEBUGGING ONLY! (REMOVE when done!) 
    } 
    return; 
} 

這會導致無錯誤。但是,當我在「打開」之後接下來做一(1)個「插入」時,我從FMDB中得到一個錯誤,表示DB Error:7「內存不足」。在這之後的每一條sql語句中,我都會得到相同的錯誤(只有創建d/b時纔會出現錯誤!)。這裏是插入代碼:

//--------------------- addRecordToDatabase ----------------------| 
+ (void)addRecordToDatabase: (ZBarSymbol *)symbol { 


    FMDatabase* _db = [FMDatabase sharedFMDatabase]; 

    [_db setLogsErrors:1]; // log all of the SQLite d/b errors 

    [_db executeUpdate: @"INSERT INTO CardData (card_id, card_name, code_val) VALUES (?, ?, ?)", symbol.data, @"Test Card", symbol.typeName, nil]; 

} 

這是一個非常小的數據最小的d/b。我跑了檢查員,沒有什麼不尋常的。任何建議將不勝感激。

回答

18

我想你應該在你的代碼中調用[_db open],它應該修復它。 FMDB中的「內存不足錯誤」似乎也意味着缺少表或連接未打開造成的錯誤。

+2

謝謝......我認爲那是......(這是一張缺少的表格)。 – SpokaneDude 2011-05-05 15:08:10

+0

我做了類似的監督,但錯誤消息不過。 – 2015-09-05 17:35:40

+0

你真的幫了我很多。愚蠢的消息 – 2017-04-13 16:01:05