Objective c 使用自动增量将FMDB插入到
我一直在想办法,但似乎找不到解决办法。我有一个创建为以下内容的表:Objective c 使用自动增量将FMDB插入到,objective-c,sqlite,fmdb,Objective C,Sqlite,Fmdb,我一直在想办法,但似乎找不到解决办法。我有一个创建为以下内容的表: [db executeUpdate:@"CREATE TABLE 'MEDIA' (identifier INTEGER PRIMARY KEY AUTOINCREMENT, taskIdentifier INTEGER, type INTEGER, data BLOB)"] 我应该如何在这个表中插入一条记录?我试过这个: [db executeUpdate:@"INSERT INTO 'MEDIA' VALUES($ne
[db executeUpdate:@"CREATE TABLE 'MEDIA' (identifier INTEGER PRIMARY KEY AUTOINCREMENT, taskIdentifier INTEGER, type INTEGER, data BLOB)"]
我应该如何在这个表中插入一条记录?我试过这个:
[db executeUpdate:@"INSERT INTO 'MEDIA' VALUES($next_id,?,?,?)" withArgumentsInArray:arguments];
然而,参数是一个有4个值的NSArray,第一个值是一个伪值(因为它应该自动递增),但没有用。这在FMDB中应该如何工作?您需要问问自己是否真的想在那里使用自动增量关键字。AUTOINCREMENT与INTEGER主键一起带来了非常具体的行为,如下所述。很可能您不需要它,在这种情况下,只需在列定义中保留INTEGER主键即可。 现在,定义为INTEGER主键的列实际上变成了ROWID的别名,因此您有两个选项:
- 在INSERT语句中省略此列的值。这将自动在此处插入下一个可用值。从文档中:
因此,您的插入将如下所示:通常的算法是在插入之前为新创建的行指定一个比表中最大行ID大一的行ID。
但是arguments数组将只包含taskIdentifier、type和data的3个值[db executeUpdate:@“insert INTO'MEDIA'VALUES(?,,?)”with argumentsInArray:arguments]
- 为标识符列提供如下值:
[db executeUpdate:@“插入到带有ArgumentsInArray:arguments的“媒体”值(?,?,?)”代码>,参数数组包含索引0上作为NSNumber的标识符