FMDatabase库中数据库的查询

linux_fay 2011-06-15 10:11:45
对于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掉了。不知道你们是否遇到过这种情况,求帮助呀!
...全文
1303 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
WhyGoSoFar 2011-12-24
  • 打赏
  • 举报
回复
因为这个接口时多参数的,你需要加上nil 作为结束符
新地球 2011-08-01
  • 打赏
  • 举报
回复
大哥,为什么很多方法后面跟的参数要加nil啊?
linux_fay 2011-06-18
  • 打赏
  • 举报
回复
谢谢!
volcan1987 2011-06-17
  • 打赏
  • 举报
回复
试用了一下fmdatabase,

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

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

这样就可以了
volcan1987 2011-06-16
  • 打赏
  • 举报
回复
不用写死了吧,

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

像这样就可以的吧
linux_fay 2011-06-16
  • 打赏
  • 举报
回复
谢谢,好像真没有这样用的,现在我就只能把它写死了。虽然这样不好,但是没办法,只能先凑合着了!
volcan1987 2011-06-16
  • 打赏
  • 举报
回复
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形式,仅提供个思路!祝楼主早日解决问题!

29,031

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧