fmdb -> intForQuery

    //開始使用建立的資料庫

    //資料庫建在 /tmp 裡,如果沒有 tmp.db,應該會自己建一個
    FMDatabase *db = [FMDatabase databaseWithPath:@"/tmp/tmp.db"];

    if (![db open]) { //一定要 [db open] 喔!! 不然出的錯不好抓
        NSLog(@"Could not open db.");
    }
    else {
        // kind of experimentalish.
        [db setShouldCacheStatements:YES];
        [db executeUpdate:@"CREATE TABLE IF NOT EXISTS test (idx INTEGER PRIMARY KEY AUTOINCREMENT, date TEXT, stepcounter INTEGER, calorie DOUBLE, hour INTEGER, minutes INTEGER, second INTEGER)"]; //隨便建一個資料表的命令

        [db executeUpdate:@"INSERT INTO test (idx, date) VALUES (?, ?)",nil,@"2011-01-15"];

        //順便寫一段可以作 Transaction 的方法

        [db beginTransaction];
        [db executeUpdate:@"UPDATE test SET second = ? WHERE date = ?",             
            [NSNumber numberWithInt:5], 
            @"2011-01-15"];
        [db commit];

        FMResultSet *rs = [db executeQuery:@"SELECT rowid,* FROM userTable WHERE date=?", @"2011-01-15"]; // 這裡前面有一個 rowid ,不加能不能 select 到我就沒去試了

        while ([rs next]) { //[rs next]一定要有喔!! 不然程式編起來不會有錯,可是抓的值都不對

                 int a = [rs intForColumn:@"second"];

//..... 其他值的抓法都跟上面差不多,偷懶的我就省略了

        }

        [rs close]; //rs用完要記得 close

        //另外還有下面這種寫法也可以抓到值

        int b = [db intForQuery:@"SELECT second FROM userTable WHERE date=?", @"2011-01-15"];

...

}

[db close]; // db用完也要記得 close

你可能感兴趣的:(fmdb -> intForQuery)