0

我正在为我的应用程序使用 FMDB 在 sqlite 中存储数据。这是我的代码

来自 AppDelegate

- (void)applicationDidFinishLaunching:(UIApplication *)application 

{

FMDatabase* db = [FMDatabase databaseWithPath:@"/tmp/sql.sqlite"];

if (![db open]) {
    NSLog(@"Could not open db.");

}
NSLog(@"DB opened successfully");

// 此处未显示完整代码

}

我在 ViewController 中有以下代码

-(IBAction)insertButtonClicked:(id)sender

{ NSLog(@"in insertButtonCLicked");

[db beginTransaction];

[db executeUpdate:@"insert into sample (url) values (?)",@"google'"];

[db commit];

}

-(IBAction)displayButtonClicked:(id)sender

{

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 在 DisplayCLicked 中插入数据样本 [3092:20b]

2011-03-07 07:30:16.860 InsertDataSample[3092:20b] Rs 包含 => (null)

请帮助我的朋友。我在 FMDB 上工作了很多天,但我无法使用 FMDB。提前致谢

4

1 回答 1

3

在您的查询之后插入它,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'
于 2011-03-06T15:26:04.677 回答