专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Iphone

FMDatabase库中数据库的查询,该如何处理

发布时间:2010-05-30 01:23:01 文章来源:www.iduyao.cn 采编人员:星星草
FMDatabase库中数据库的查询
对于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掉了。不知道你们是否遇到过这种情况,求帮助呀!

------解决方案--------------------
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形式,仅提供个思路!祝楼主早日解决问题!
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: