Mac に MySQL をインストールする
の続きです。
MySQL には 大きなバイナリデータを保存する BLOB型 (Binary Large Object) が用意されている。
しかしMySQL には BLOB 型を扱うための関数は用意されていない。
例えば、 sqlite には sqlite3_bind_blob という関数がある。
MySQL では整数型や文字列型と同様に SQl文でアクセスする。
C言語では バイナリデータを扱うのは面倒です。
そこでバイナリデータを文字列に変換して扱うことにする。
文字列に変換する方法として BESE64と16進表記(hex string)の2つがある。
下記のようにして、ファイルから画像データを読み込み、 Base64 に変換して MySQL に保存する
size_t img_size; char* img_data = binary_read( fpath, &img_size ); char* b16_data = base64_encode(img_data, img_size); char FORMAT[] = "INSERT INTO tb_image( image ) VALUES ( '%s' )"; snprintf( sql, sql_size , FORMAT, b16_data ); mysql_query(conn, sql);
サンプルコードを Github に公開した
https://github.com/ohwada/MAC_cpp_Samples/tree/master/mysql/image