Connector/C++ で MySQL を操作
- 2018/07/20 09:31
-
学校の関係で MySQL を触る機会が増えてきたので, MySQL の C++ 向けライブラリを一度触っておこうという忘備録.
これを実行すると, 次のように, 実在しそうでしなさそうな, 妙に怪しい雰囲気1の一覧が出力される.
|顧客番号| C001 |氏名| 青山 花子 |郵便番号| 958-3626 |住所| 大分県横浜市瀬谷区台場12丁目23番18号 勝どきコーポ435 |電話番号| 090-3537-6380
|顧客番号| C002 |氏名| 廣川 翔太 |郵便番号| 297-3630 |住所| 群馬県西多摩郡奥多摩町平須賀14丁目5番2号 コーポ台東850 |電話番号| 88-1940-6921
|顧客番号| C003 |氏名| 田辺 浩 |郵便番号| 596-4390 |住所| 大分県いすみ市虎ノ門虎ノ門ヒルズ森タワー31丁目11番1号 |電話番号| 080-4923-6200
|顧客番号| C004 |氏名| 井上 知実 |郵便番号| 903-5859 |住所| 岩手県北区箪笥町7丁目6番2号 高田馬場クレスト753 |電話番号| 090-1267-5646
|顧客番号| C005 |氏名| 浜田 明美 |郵便番号| 644-0375 |住所| 北海道武蔵野市蟇沼41丁目6番4号 パレス南赤田445 |電話番号| 090-3897-3724
見てのとおり, docker-compose を使って MySQL コンテナを立てて, そこに要求を投げる.
内容は, データベースを新たに作成してテーブル, 値を追加して, 追加項目を全てSELECT
するだけ2.
C++ には RAII があるので, コード中でもそうなのだがSET AUTOCOMMIT = 0
,START TRANSACTION
のあとに,
COMMIT
をし忘れるなんてことを防げるのが良い.
一応 SQL 文が格納されている Range かイテレータを渡せば順次実行, 単一の SQL を渡せばもちろんそれを実行するようにしている.
実際に必要に迫られているわけではないのでなんとも言えないが, 現時点では,
それなりに気持ちよく書ける程度にラッピングできたような気がする3.
1 点この Connector/C++ に対する不満を申し上げるとすれば, C++11 までにしか未だ対応していない点だろう.
しかし久しぶりに C++ 書いた. なんだろうこの実家感は.
活動継続のためのご支援を募集しています