sqliteは小中規模のデータベース管理ソフトで,主にサーバではなくアプリケーションに組み込む形で使われています。
iPhoneではさらにラッパーとしてFMDatabaseを使用しています。
iOSのsqliteのライブラリはC言語のライブラリで提供されているようで,開発上,文法や型変換がネックになりかねません。
そこを吸収してくれるのがFMDatabaseです。
前置きはこれくらいで,今回は最後にテーブルに書き込んだレコードのidの値を取得する方法を記録しておきます。
FMDatabase *db = [self getDB];
int lastInsertId;
if([db executeUpdate:@"INSERT INTO TABLE1(RECORD1) VALUES(?)", record1]){
        lastInsertId = [db lastInsertRowId];
    }
    else{// 登録に失敗した場合
        NSLog(@"ERROR: %d: %@", [db lastErrorCode], [db lastErrorMessage]);
        [db close];
        return NO;
    }
}
[db close];
*getDBはファイルパスとか指定してdatabaseオブジェクトを取得するメソッドです。
上記のようにしてインサート直後にlastInsertRowIdメソッドでそのレコードのidを取得できます。
気をつけなければならないのは,[db close]後はもう取得できないということです。
後々に使用するのであれば,変数に値をコピーしておく必要があります。
ちなみにsqliteでは,たいていテーブルに_id列という一意の値が入る列を作成します。
上記で取得される値はこの_id列の値と同じです。
今日はこのあたりで。
0 件のコメント:
コメントを投稿