Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
fmdb(sql)奇怪错误(iOS)_Ios_Sql - Fatal编程技术网

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、数组、日期不按我的方式工作