UnityでMySQLを使用する

  • 34
    Like
  • 10
    Comment
More than 1 year has passed since last update.

UnityでMySQLを使用する

実行環境 :
MacOS 10.7.5, Windows8.1
Unity4.3.1

MySQL Connectorのダウンロード

http://dev.mysql.com/downloads/connector/net/
こちらよりMono用のMySQL Connectorをダウンロードします.

Select Platform: で .NET & Mono を選択

ConnectorをUnityにインポート

ダウンロードして得られたファイルの中で、
mysql-connector-net-x.x.x-noinstall > v2.0 > mysql.data.dll
をUnityAsset内の Plugins フォルダに入れる.

Api Compatibility Level を変更

Player Settings > Optimization > Api Compatibility Level を
.NET 2.0 に変更

コード例


using UnityEngine;
using System;
using System.Collections;

using MySql.Data;
using MySql.Data.MySqlClient;

public class MySQLTest : MonoBehaviour {

    string SERVER    = "localhost";
    string DATABASE  = "database";
    string USERID    = "root";
    string PORT      = "3306";
    string PASSWORD  = "pass";
        string TABLENAME = "hoge";

    void Start () {

        StartCoroutine ( SelectData () );

    }

    IEnumerator SelectData () {

        MySqlConnection con = null;

        string conCmd = 
                "server="+SERVER+";" +
                "database="+DATABASE+";" +
                "userid="+USERID+";" +
                "port="+PORT+";" +
                "password="+PASSWORD;

        try {

            con = new MySqlConnection( conCmd );
            con.Open ();

        } catch (MySqlException ex){
            Debug.Log ( ex.ToString() );
        }

        string selCmd = "SELECT * FROM TABLENAME LIMIT 0, 1200;";

        MySqlCommand cmd = new MySqlCommand( selCmd, con );

        IAsyncResult iAsync = cmd.BeginExecuteReader ();

        while ( !iAsync.IsCompleted ){
            yield return 0;
        }

        MySqlDataReader rdr = cmd.EndExecuteReader ( iAsync );

        while ( rdr.Read() ) {
            if( !rdr.IsDBNull ( rdr.GetOrdinal ("ID") ) ){
                //Debug.Log ( "ID : " + rdr.GetString ("ID") );
            }
        }

        rdr.Close ();
        rdr.Dispose ();
        con.Close ();
        con.Dispose ();
    }
}


※非同期で動きません (> <)