0

以下は私が使用しているコードです:

FMDatabaseQueue *queue = [[DataBaseHelper sharedManager] queue];
[queue inDatabase:^(FMDatabase *db) {

FMResultSet *results = [db executeQuery:@"select * from EVENT where ESTATUS='unread' and HIT_ATTEMPTS < 5 "];

if([results next])
{
   [results close];

   @try {
           BOOL success=FALSE;
           NSString *query=[NSString stringWithFormat:@"insert into EVENT (EDATA, ESTATUS ,EUSER) values('%@','%@','%@')",@"google.com",@"unread",@"xyz"];

           success = [db executeUpdate:query];
           NSLog(@"create edata row, %d:%@", [db lastErrorCode], [db lastErrorMessage]);
        }

   @catch (NSException *exception) {
        NSLog(@"Exception");
   }

上記のコードでは、 success = [db executeUpdate:query]; 動かない。ブレークポイントを配置してみました。このコード行の後、すべて終了します。ログは印刷されません。

4

1 に答える 1

0

なぜtryとCatchを使用しているのかわかりませんが、とにかく手順に従ってください。確実に機能します

データベースの作成

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docsPath = [paths objectAtIndex:0];
NSString *path = [docsPath stringByAppendingPathComponent:@"database.sqlite"];

FMDatabase *database = [FMDatabase databaseWithPath:path];

データベースを開いてテーブルを作成する (オプション)

[database open];
//optional
[database executeUpdate:@"create table user(name text primary key, age int)"]; 

データベースのクエリ

FMResultSet *results = [database executeQuery:@"select * from user"];
while([results next]) {
    NSString *name = [results stringForColumn:@"name"];
    NSInteger age  = [results intForColumn:@"age"];        
    NSLog(@"User: %@ - %d",name, age);
}
[database close];
于 2013-10-25T08:41:47.320 に答える