UnityでMySQLを使用する
こんにちはハラダITサポート代表の原田です。
Unityでバーコード情報を収集して色々なものに活用できるようなアプリを作ろうと思ってまずはDB(MySQL)への収集データの保存方法を確認してみました。
意外と簡単でした。
1. MySQL Connectorのダウンロード
このリンク先でOSを".NET & Mono"に指定してダウンロードします。
2. DLLセット
ダウンロードしたMySQL Connectorを解凍すると、その中のバージョンフォルダ内にDLLが入っています。
Assetsフォルダの中に『Plugins』というフォルダを作成してその中に必要なDLLをコピーします。
私の場合、最初『MySql.Data.dll』だけ入れたら、他の2つのDLL(BouncyCastle.Crypto.dll, Google.Protobuf.dll)が足らないとエラーになったので、コピーしていれています。
3. コード(C#)
私はUnity側でボタンを作ってそのクリック(onClick)に下記のスクリプトを登録してテストしました。
using System; // Exception
using MySql.Data; // MySQL関連
using MySql.Data.MySqlClient; // MySQL関連
... 中略
/// <summary>
/// 表示ボタンクリック時処理
/// </summary>
public void onClick()
{
string connCmd =
"server=harada-its.com;" + // 接続先サーバ
"database=test;" + // 接続先データベース
"port=3306;" + // 接続ポート
"userid=xxxx;" + // 接続ユーザーID
"password=xxxxx"; // 接続パスワード
Debug.Log("MySQLと接続中...");
using (var conn = new MySqlConnection(connCmd))
{
try
{
conn.Open();
using(var cmd = new MySqlCommand("SELECT * FROM user;", conn))
{
using(var dr = cmd.ExecuteReader())
{
while (dr.Read())
{
// 順番に結果をログに出力
Debug.Log(dr[0] + "," + dr[1] + "," + dr[2] + "," + dr[3]);
}
dr.Close();
}
}
}
catch (Exception ex)
{
Debug.Log(ex.ToString());
}
finally
{
try
{
conn.Close();
Debug.Log("接続を終了しました");
}
catch
{
Debug.Log("Close Error");
}
}
}
}
これで上記スクリプトを登録したボタンを押すとログにuserテーブルの内容が表示されます。
おぉ。これ簡単じゃ~ん!と思って今度は外から繋げてみようと、テザリングで繋げて確認してみたらエラー。。。
MySql.Data.MySqlClient.MySqlException (0x80004005): Host 'xxxxxxxxxx' is not allowed to connect to this MySQL server
VPNで繋げたら関係ないだろうと思ってテザリング+VPN接続して確認してみたらエラー。。。
MySql.Data.MySqlClient.MySqlException (0x80004005): Host 'gateway' is not allowed to connect to this MySQL server
うん?なんでだ?
。。。。しばらく考える。。。。
MySQLにログインして、select user, host from user;
そして納得。
rootでのログインはローカルアドレスからしか許可していませんでした。
試しに%で全部許可するようにして実行したらVPN接続も必要なく外から問題なく接続できました。
ちなみにVPN接続だとHOST名が"gateway"という名前になるんですね。
ちょっと勉強になりました。
いかがでしたでしょうか?
MySQLにUnityから接続したいと思いぐぐってみたら、PHP使わないとダメとかちょっと面倒そうだなぁと思ってましたが、結構簡単に使えることがわかりました。
というわけで、あなたの猫の手になりたい ハラダ IT サポート 代表の原田でした。
何かあればお気軽にコメントよろしくお願いします。