FMDatabase库中数据库的查询

iOS 码拜 9年前 (2015-05-04) 1528次浏览 0个评论
 

对于FMDatabase的使用,在查询这方面遇到了一点问题,想了很久还是没有想出个所以然来,希望各位大大能给点提示!问题如下:
我写了一个select函数,
– (NSMutableArray *)select:(NSString *)column{
    NSMutableArray *result = [[[NSMutableArray alloc] initWithCapacity:0] autorelease];

   //FMDatabase *db;db在头文件中声明的,是一个FMDatabase对象,能确定的是我的数据库里的coupon_table里是有数据的

    FMResultSet *rs = [db executeQuery:@”select %@ from coupon_table”,column];

    NSLog(@”rs = %@”,rs);
    //这里打印的结果为rs = (null),所以导致没有进入while循环中,所以result可变数组的值为result = ();

    while ([rs next]) {

        [result addObject:[rs stringForColumn:column]];
        //之所以要用addObject是为了把表中的相关字段的值取出来,写到数组中,以便要用的时候直接操作数组就行了

    }
    [rs close];
    NSLog(@”result = %@”, result);
    //这边打印的结果是result = ()
    return result;
}

调用这个函数是在另一个文件夹中:
[couSql select:@”id”];
//这里的couSql对象是包含了select函数文件所在类的对象。
之前的版本是- (NSMutableArray *)select,没有加参数。这种情况下,result是有值的,能取到表里的我要的数据。但是那种情况是写死了,这样不好。所以改加一个参数,结果就悲催了。

我也试过用FMResultSet *rs = [db executeQuery:@”select ? from coupon_table”,column];这种形式,这样的话,rs能指向正确的内存位置,但是执行到[result addObject:[rs stringForColumn:column]];就crash掉了。不知道你们是否遇到过这种情况,求帮助呀!

FMDatabase库中数据库的查询
40分
FMResultSet *rs = [db executeQuery:@”select %@ from coupon_table”,column];

个人感觉这句话有问题,可不可以先:

NSString *sql = [NSString stringWithFormat:@”select %@ from coupon_table”, column];
然后再
FMResultSet *rs = [db executeQuery:sql];

没用过fmdatabase, 所以不知道executeQuery这个方法支持不支持你写的fomart形式,仅提供个思路!祝楼主早日解决问题!

FMDatabase库中数据库的查询
谢谢,好像真没有这样用的,现在我就只能把它写死了。虽然这样不好,但是没办法,只能先凑合着了!
FMDatabase库中数据库的查询
不用写死了吧,

NSString *sql = [NSString stringWithFormat:@”select %@ from coupon_table”, column];
FMResultSet *rs = [db executeQuery:sql];

像这样就可以的吧

FMDatabase库中数据库的查询
试用了一下fmdatabase,

你这里FMResultSet *rs = [db executeQuery:@”select ? from coupon_table”,column];这种形式要改成:

FMResultSet *rs = [db executeQuery:@”select ? from coupon_table”,column, nil];

这样就可以了

FMDatabase库中数据库的查询
谢谢!
FMDatabase库中数据库的查询
大哥,为什么很多方法后面跟的参数要加nil啊?
FMDatabase库中数据库的查询
因为这个接口时多参数的,你需要加上nil 作为结束符

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明FMDatabase库中数据库的查询
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!