1 [self.db executeUpdate:@"create table test (a text, b text, c integer, d double, e double)"];
我们创建一个表格text,可以很清楚的看到其字段对应的数据类型:
数据类型:
TEXT:字符串类型。
INTEGER:整型。
REAL:浮点型(double、float)。
BLOB:二进制数据
关于 ‘?’:FMDB中 ‘?’ 表示对象占位符,不能用来占位基本数据类型!!
那么我们插入数据的时候,可以先把浮点型等转为对象类型,再用 ‘?’ 占位,插入数据。
e.g.
int i = 0; while (i++ < 20) { [self.db executeUpdate:@"insert into test (a, b, c, d, e) values (?, ?, ?, ?, ?)" , @"hi'", [NSString stringWithFormat:@"number %d", i], [NSNumber numberWithInt:i], [NSDate date], [NSNumber numberWithFloat:2.2f]]; } [self.db commit];
查询结果:
FMResultSet *rs = [self.db executeQuery:@"select rowid,* from test where a = ?", @"hi'"]; while ([rs next]) { NSLog(@"%d %@ %@ %@ %@ %f %f", [rs intForColumn:@"c"], [rs stringForColumn:@"b"], [rs stringForColumn:@"a"], [rs stringForColumn:@"rowid"], [rs dateForColumn:@"d"], [rs doubleForColumn:@"d"], [rs doubleForColumn:@"e"]); }
打印:
2016-04-10 11:39:30.629 学习数据库[12838:1225278] 1 number 1 hi' 1 2016-04-10 03:39:30 +0000 1460259570.625429 2.200000 2016-04-10 11:39:30.630 学习数据库[12838:1225278] 2 number 2 hi' 2 2016-04-10 03:39:30 +0000 1460259570.625830 2.200000 2016-04-10 11:39:30.630 学习数据库[12838:1225278] 3 number 3 hi' 3 2016-04-10 03:39:30 +0000 1460259570.625919 2.200000 2016-04-10 11:39:30.631 学习数据库[12838:1225278] 4 number 4 hi' 4 2016-04-10 03:39:30 +0000 1460259570.625952 2.200000 2016-04-10 11:39:30.631 学习数据库[12838:1225278] 5 number 5 hi' 5 2016-04-10 03:39:30 +0000 1460259570.625980 2.200000 2016-04-10 11:39:30.631 学习数据库[12838:1225278] 6 number 6 hi' 6 2016-04-10 03:39:30 +0000 1460259570.626003 2.200000 2016-04-10 11:39:30.631 学习数据库[12838:1225278] 7 number 7 hi' 7 2016-04-10 03:39:30 +0000 1460259570.626023 2.200000 2016-04-10 11:39:30.631 学习数据库[12838:1225278] 8 number 8 hi' 8 2016-04-10 03:39:30 +0000 1460259570.626044 2.200000 2016-04-10 11:39:30.632 学习数据库[12838:1225278] 9 number 9 hi' 9 2016-04-10 03:39:30 +0000 1460259570.626063 2.200000 2016-04-10 11:39:30.632 学习数据库[12838:1225278] 10 number 10 hi' 10 2016-04-10 03:39:30 +0000 1460259570.626083 2.200000
总结:我们创表时指定字段a为整型,当我们插入数据时可以将其包裹为对象插入数据库,并不影响我们的插入结果!!而且针对对象类型,占位符最好使用 '?',因为其默认已经添加了单引号 ''。
尊重作者劳动成果,转载请注明: 【kingdev】