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.341insertButtonCLickedのInsertDataSample[3092:20b]

2011-03-07 07:30:16.860DisplayCLickedのInsertDataSample[3092:20b]

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

Plzは私に友達を助けてくれます。私は何日も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 に答える