fmdb(sql)奇怪错误(iOS)
我得到一个错误:fmdb(sql)奇怪错误(iOS),ios,sql,Ios,Sql,我得到一个错误: Failed to insert row: Error Domain=FMDatabase Code=1 "table rss has 4 columns but 3 values were supplied" UserInfo=0x10914dc00 {NSLocalizedDescription=table rss has 4 columns but 3 values were supplied} 但我的表中有3列: CREATE TABLE "rss" ("name"
Failed to insert row: Error Domain=FMDatabase Code=1 "table rss has 4 columns but 3 values were supplied" UserInfo=0x10914dc00 {NSLocalizedDescription=table rss has 4 columns but 3 values were supplied}
但我的表中有3列:
CREATE TABLE "rss" ("name" VARCHAR PRIMARY KEY NOT NULL UNIQUE , "array" TEXT, "date" DATETIME)
数组文本-存储100+个文本值的数组
要加载和创建基础,我使用:
NSString *const kDatabaseFileName = @"rss.sqlite";
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *databasePath = [documentsDirectory stringByAppendingPathComponent:kDatabaseFileName];
if (![fileManager fileExistsAtPath:databasePath]) {
NSString *defaultDatabasePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:kDatabaseFileName];
[fileManager copyItemAtPath:defaultDatabasePath toPath:databasePath error:nil];
}
FMDatabase *database = [FMDatabase databaseWithPath:databasePath];
if (![database open]) {
database = nil;
NSLog(@"Failed to open database");
}
[FMDatabase setSharedInstance:database];
要在base中保存我的值,我使用:
FMDatabase *database = [FMDatabase sharedInstance];
NSMutableArray *parameters = [NSMutableArray arrayWithCapacity:10];
[parameters addObject:shortSelected];
[parameters addObject:_dataAll];
[parameters addObject:date];
//[parameters addObject:date];
BOOL updateResult = [database executeUpdate:@"INSERT OR REPLACE INTO rss VALUES ( ?, ?, ?)" withArgumentsInArray:parameters];
if (!updateResult) {
NSLog(@"Failed to insert row: %@", [database lastError]);
}
NSInteger rowsCount = 0;
FMResultSet *resultSet = [database executeQuery:@"SELECT COUNT(*) FROM rss"];
if ([resultSet next]) {
rowsCount = [resultSet intForColumnIndex:0];
}
怎么了?使用命令行查看表的架构。这个错误清楚地表明实际上有4列。除了检查这些之外,最好在insert语句中指定列:insert into rssname、array、date values?、?、?。这样就不会有什么含糊不清的地方了。我不知道这里的命令行是如何工作的,但我在数据库中添加了两次日期,它是可以工作的。并使用?;插入rssname、数组、日期不按我的方式工作