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 件のコメント:
コメントを投稿