C言語(Windows環境)からMySQL #4 実行編
C言語(Windows環境)からMySQL #4 実行編
C言語(Windows環境)からMySQL #4 実行編
~前回までのあらすじ~
Windowsのコマンドプロンプト(文字コード:cp932)からC言語でMySQLにアクセスしたい!!と思い立った勇者筆者は検索エンジン先生にそのやり方を尋ねに行く。
しかしそこにはわざわざWindowsのコマンドプロンプトからC言語でMySQLにアクセスするようなド変態なサンプルは見当たらなかった。
そこで勇者筆者は自らの手でサンプルを作成し動かすべく旅に出た試行錯誤するのだった…。
コピペでサンプルが動かないなら自力でサンプルを作ればいいじゃない
なお、今回は安全性や動作速度などは一切考えずにあくまでも「Windowsのコマンドプロンプトから直接MySQLを使えるプログラムをC言語で作る」ことに注力しています。
セキュリティ面や動作速度、バグの有無などは考慮に入れていませんので参考にする場合はそのあたりにはお気を付けの上、自己責任で利用してください。
って、急にまじめに戻ってるYO!!
開発環境
C言語
C言語の環境はこちらー>環境導入前編 環境導入後編 おまけその1 おまけその2
MySQLの環境は以下のものを用意しました。
MySQL 5.5.56(zip形式のものをダウンロード、解凍して使用)
Connector/Cは以下のものを用意しました。
Connector/C 6.1.10(zip形式のものをダウンロード、解凍して使用)
本記事は以上の環境を前提に説明を行います。
C言語からMySQLを利用する手順
C言語からMySQLを利用する手順
C言語からMySQLを利用するための手順は大雑把に書くと以下の通りです。
5.実行する ← 今回はココ
他の環境(Javaとか)から簡単に叩けるんだし、楽勝!!・・・と思ったら、コンパイルで思いっきり詰まって悔しかったのでメモに残したのは内緒。
前回までで4のコンパイルが終わったのでのでいよいよ今回は実行します。
5.実行する
Windows環境でC言語を利用してMySQLを使用するプログラムが完成した(はずな)ので今回は実行します。
実行なんてちょろいちょろい♪(^^
ということで、さっそく実行します。
Sample.exe
これで実行。。。
出来ないΣ(゜O゜
って言われたけど、いったいなんじゃこりゃ!?
静的リンクライブラリと動的リンクライブラリ
実行しようとすると以下のように画面に出てきました。
「コンピュータにlibmysql.dllがないためプログラムを開始できません。…(略)」
この libmysql.dll とは何者なんでしょうか。
それを考える前に、まずライブラリについて簡単に触れておきましょう。
そもそもライブラリは2種類あります。一つは静的リンクライブラリ(Static Link Library)、もう一つは動的リンクライブラリ(Dynamic Link Library)です。
それぞれの特徴は以下の通りです。※libファイルには2種類あるようですが本記事では省略します。詳細は調べてください。
lib ~静的リンクライブラリ~
・実行ファイル(.exeファイル)の中にライブラリが取り込まれる
・実行時には実行ファイル(.exeファイル)のみで実行可能
dll ~動的リンクライブラリ~
・実行ファイル(.exeファイル)とライブラリの部分が別々
・実行時には実行ファイル(.exeファイル)の他に、該当のライブラリファイル(.dllファイル)がないと実行できない
一見すると静的リンクライブラリは実行ファイルのみで動作するため使い勝手がよさそうに見えます。しかし静的リンクライブラリの場合、ライブラリに変更があった場合は再度コンパイルしなおす必要があります。
それに対して動的リンクライブラリの方は一見すると使い勝手が悪そうですが、ライブラリに変更があった場合、.dllファイルだけ差し替えれば.exeファイルはそのままで良いため再コンパイルは必要ありません。
今回はコンパイル時に動的リンクライブラリ(libmysql.dll)をリンクしていたため、実行時に該当のdllファイルが必要になったのです。
※動的リンクライブラリおよび静的リンクライブラリについては以下のサイトを参考に執筆いたしました。
サイト名:Corrupted Heap ソフト/ハードができる技術者を目指して
ページ名:libファイルとdllファイルの違いを簡単にまとめてみた
URL: https://corruptedhp.wpblog.jp/difference_lib_dll/
実行に必要なもの
ということで、今回はlibmysql.dllファイルがないと実行できません。該当のファイルはMySQL本体のlibフォルダ(★)に入っています。実行時にはこのlibmysql.dllファイルが必要になります。
そこで、このlibmysql.dllファイルをSample.exeと同じフォルダにコピーします。
全体のディレクトリ構成は以下の通りになります。
MySQLサンプル用フォルダ
┠Sample.c(ソースコード)
┠Makefile(makeファイル)
┠Sample.exe(実行ファイル)
┠libmysql.dll(動的リンクライブラリ) //このファイルがないとSample.exeが実行できない
┃
┣mysql-5.5.56-winx64(MySQL本体のフォルダ)
┃ ┣(説明で使用しないものは省略)
┃ ┣bin(★)
┃ ┣include(★)
┃ ┗lib(★)
┃
┗mysql-connector-c-6.1.10-winx64(connector Cのフォルダ)
┣(説明で使用しないものは省略)
┣bin(※)
┣include(※)
┗lib(※)
なお、connector/Cのlibフォルダ(※)の方にも libmysql.dll というファイルが入っています。こちらをもってきても筆者環境では動きました。
違いはわからない調べていません。あしからず。
libmysql.dll が配置できたらあとは実行するのみです。
ついに実行!!
これで実行の準備は整ったので、いよいよ実行します。
Sample.exe
これで見事実行出来ます(^ω^)
ただし、データベースが起動していてテーブルがきちんと作ってあればね (゜∀゜
(次回、ソースコード解説編へ続く)
※本記事ついては以下のサイトを参考に執筆いたしました。
サイト名:Corrupted Heap ソフト/ハードができる技術者を目指して
ページ名:libファイルとdllファイルの違いを簡単にまとめてみた
URL: https://corruptedhp.wpblog.jp/difference_lib_dll/
筆者のおすすめ記事
MinGW-w64とmsys2で作るC言語環境構築
C言語練習問題一覧
C言語でBINGOを作ろうシリーズ記事一覧
実践力が身につくC言語講座 連載リンク
競技プログラミングをイメージしたライブラリ活用講座
競技プログラミング風-標準Cライブラリ入門 連載
アルゴリズムをマスターして技術力アップ!
実践アルゴリズム講座 連載
パズルゲームの解析をテーマにしたC++講座
ゲーム解析プログラミング 連載