FMDB结果集包含空iphone
问题描述:
我正在使用FMDB为我的应用程序在sqlite中存储数据。这是我的代码FMDB结果集包含空iphone
从AppDelegate中
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
FMDatabase *分贝= [FMDatabase databaseWithPath:@ “/ TMP/sql.sqlite”];
if (![db open]) {
NSLog(@"Could not open db.");
}
NSLog(@"DB opened successfully");
//全码这里未示出
}
我具有以下在的ViewController
-(IBAction)insertButtonClicked:(id)sender
代码{ 的NSLog(@ “在insertButtonCLicked”);
[db beginTransaction];
[db executeUpdate:@"insert into sample (url) values (?)",@"google'"];
[db commit];
}
- (IBAction为)displayButtonClicked:(ID)发送
{
NSLog(@"in DisplayCLicked");
FMResultSet *rs = [db executeQuery:@"select url from sample"];
NSLog(@"Rs contains => %@",rs);
while([rs next])
{
NSLog(@"%@",[rs stringForColumn:@"url"]);
}
[rs close];
}
当我运行这段代码我得到RS为null作为如下所示(这是控制台的o/p)
2011-03-07 07:30:06.919 InsertDataSample[3092:20b] DB opened successfully
2011-03-07 07:30:13.341 InsertDataSample [3092:20B]在insertButtonCLicked
2011-03-07 07:30:16.860 InsertDataSample [3092:20B]在DisplayCLicked
2011 -03-07 07:30:16.860 InsertDataSample [3092:20b] Rs contains =>(null)
Plz帮助我的朋友。我从事FMDB工作很多天,但我无法使用FMDB。 在此先感谢
答
在您的查询后插入此内容,FMDB可能会告诉您究竟是什么问题。
if ([db hadError]) {
NSLog(@"DB Error %d: %@", [db lastErrorCode], [db lastErrorMessage]);
}
更新:
运行此:
FMDatabase *db = [FMDatabase databaseWithPath:@"/tmp/sql.sqlite"];
[db executeUpdate:@"create table sample (url TEXT);"];
[db executeUpdate:@"insert into sample (url) values(?);", @"google'"];
FMResultSet *rs = [db executeQuery:@"select url from sample;"];
while ([rs next]) {
NSLog(@"%@", [rs stringForColumn:@"url"]);
}
[rs close];
[db close];
产生这样的输出:
2011-03-06 12:38:59.831 test[93163:207] google'
Thnkas答复。但仍然存在同样的问题,即Result集包含NULL。是否有必要在FMDB中以编程方式创建表? Bcoz我使用终端创建了sample.sqlite,并且只编写了创建查询并将其与libsqlite3.0.dylib一起添加到了我的资源中。 – iOSAppDev 2011-03-06 15:32:31
但是,新代码添加后日志输出是否显示DB错误?是的,有必要在尝试插入行之前创建“样本”表。 (您也可以在executeUpdate后添加错误日志输出。) – 2011-03-06 15:56:07
即使添加新代码后也没有错误。我在viewDidLoad方法中创建了表。同样的问题,记录集为空 – iOSAppDev 2011-03-06 16:40:27