FMDB中的数据处理

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】

posted @ 2016-04-10 11:45  Kingdev  阅读(521)  评论(0编辑  收藏  举报