iOSでsqlite3

2018/03/10

iOSでsqlite3を操作するラッパーとしてFMDBというものがあるらしい.

端末にデータを保存するにはNSArray *paths = NSSearchPathForDirectoriesInDomainsNSDocumentDirectoryNSUserDomainMaskYES );

でアプリ毎に用意されているDocumentsディレクトリを用いる.

シミュレータの場合は

Users/(your accont name)/Library/Application Support/iPhone Simulator/(version)/Applications/(app id?)/Documents

がDocumentsディレクトリです.ここにDBなどファイルを置くとコードから操作することができます.

app idに関してはわけわかんないですが,思い切ってさらに一階層降りると(app name).appファイルがあるのでその名前からアプリを判断できます.

 

 

//DBの呼び出し

NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES );

    NSString *dir = [paths objectAtIndex:0];

    //自分で作成したデータベースの名前を最後に入力

    FMDatabase *db = [FMDatabasedatabaseWithPath:[dir stringByAppendingPathComponent:@"test.db"]];

    //時刻の取得

    NSDate *date = [NSDate date];

    NSDateFormatter* formatter = [[NSDateFormatteralloc] init];

    [formatter setDateFormat:@"YYYY_MM_dd_hh_mm_xss"];

    NSString *createtime = [formatter stringFromDate:date];

    //insert文の入力

    //tableはすでに作成されていると仮定

    NSString *insert = [[NSStringalloc] initWithFormat:@"INSERT INTO item(type, r, g, b, path, date) VALUES(%d,%d,%d,%d,%@, %@)", 1, (int)self.rgb[0], (int)self.rgb[1], (int)self.rgb[2], createtime,  createtime];

    [db open];

    //Queryの実行

    [db executeUpdate:insert];

    [db close];

    NSLog(@"done");