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。我跑了检查员,没有什么不寻常的。任何建议将不胜感激。
谢谢......我认为那是......(这是一张缺少的表格)。 – SpokaneDude 2011-05-05 15:08:10
我做了类似的监督,但错误消息不过。 – 2015-09-05 17:35:40
你真的帮了我很多。愚蠢的消息 – 2017-04-13 16:01:05