查看: 2784|回复: 3
打印 上一主题 下一主题

[其他] Unity引擎链接mySQL数据库

[复制链接]

1557

主题

1

听众

1万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
454
精华
31

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2013-10-15 15:15:32 |只看该作者 |倒序浏览
using UnityEngine;
using System;
using System.Collections;
using System.Data;
using MySql.Data.MySqlClient;
public class CMySql : MonoBehaviour {
    // Global variables
    public static MySqlConnection dbConnection;//Just like MyConn.conn in StoryTools before

     static string host = "192.168.1.100";
     static string id = "mysql";
     static string pwd = "123456";
     static string database = "test";
     static string result = "";
   
private string strCommand = "Select * from unity3d_test ORDER BY id;";
public static DataSet MyObj;
     void OnGUI()
     {
         host = GUILayout.TextField( host, 200, GUILayout.Width(200));
         id = GUILayout.TextField( id, 200, GUILayout.Width(200));
         pwd = GUILayout.TextField( pwd, 200, GUILayout.Width(200));
         if(GUILayout.Button("Test"))
         {
    string connectionString = string.Format("Server = {0}; Database = {1}; User ID = {2}; Password = {3};",host,database,id,pwd);
    openSqlConnection(connectionString);
   
    MyObj = GetDataSet(strCommand);
         }
         GUILayout.Label(result);
     }  
    // On quit
    public static void OnApplicationQuit() {
        closeSqlConnection();
    }
   
    // Connect to database
    private static void openSqlConnection(string connectionString) {
        dbConnection = new MySqlConnection(connectionString);
        dbConnection.Open();
        result = dbConnection.ServerVersion;
        //Debug.Log("Connected to database."+result);
    }
   
    // Disconnect from database
    private static void closeSqlConnection() {
        dbConnection.Close();
        dbConnection = null;
        //Debug.Log("Disconnected from database."+result);
    }
   
    // MySQL Query
    public static void doQuery(string sqlQuery) {
        IDbCommand dbCommand = dbConnection.CreateCommand();   
        dbCommand.CommandText = sqlQuery;
        IDataReader reader = dbCommand.ExecuteReader();
        reader.Close();
        reader = null;
        dbCommand.Dispose();
        dbCommand = null;
    }
    #region Get DataSet
    public  DataSet GetDataSet(string sqlString)
    {
        //string sql = UnicodeAndANSI.UnicodeAndANSI.UnicodeToUtf8(sqlString);
   
   
  DataSet ds = new DataSet();
        try
        {
            MySqlDataAdapter da = new MySqlDataAdapter(sqlString, dbConnection);
            da.Fill(ds);
   
        }
        catch (Exception ee)
        {
   
            throw new Exception("SQL:" + sqlString + "\n" + ee.Message.ToString());
        }
        return ds;
   
    }
    #endregion
}

  

using UnityEngine;
using System;
using System.Collections;
using System.Data;

public class DataBaseTest : MonoBehaviour {
public GUISkin myGUISkin = new GUISkin();
string strID = "";
string strName = "";
string strSex = "";
int Index = 1;
// Use this for initialization
void Start () {
}

void OnGUI()
{
  GUI.skin = myGUISkin;
  if (GUI.Button(new Rect(100,320,100,100),"Click Me"))
  {
   foreach(DataRow dr in CMySql.MyObj.Tables[0].Rows)
   {
    if (Index.ToString() == dr["ID"].ToString())
    {
     strID = dr["ID"].ToString();
     strName =  dr["Name"].ToString();
     strSex = dr["Sex"].ToString();
      
     break;
    }
   }   
   Index++;
    if(Index > 5)
   {
    Index = 1;
   }  
   
  }
  GUI.Label(new Rect(320,100,150,70),"DataBaseTest");
  GUI.Label(new Rect(300,210,150,70),strID);
  GUI.Label(new Rect(300,320,150,70),strName);
  GUI.Label(new Rect(300,430,150,70),strSex);
   
}
}
2.導入dll
  同先前的帖子 , 將MySql.data.dllImport至Assets底下 , 然後再到Unity\Editor\Data\Frameworks\Mono.framework中
將System.Data.dll 也一起Import至Assets內 , 當然 , 如果想顯示中文的話 , 請參考中文視頻教學 ,建立一個GUISkin與字型


3.建立數據庫內容
  主要是因為代碼中的這段內容


static string host = "192.168.1.100";
static string id = "mysql";
static string pwd = "123456";
static string database = "test";
private string strCommand = "Select * from unity3d_test ORDER BY id;";
其中host ,id , pwd 請自行設定 , 簡單的說就是連進你的MySQL啦~
然後建立一個名為test的Database , 在這個test下建立一張table , 取名為 unity3d_test,
接下來就為這張unity3d_test建立3個欄位 : ID , Name , Sex (記得將ID設定為primary key且默認值為1)
再來自行填入5筆資料(5筆資料的原因是腳本那邊是設定成5筆資料一個循環 , 使用者可以自行更改腳本試試)


4.建立GameObject
  建立完GameObject後將上面兩個腳本掛上去 ,如果有建立GUISkin , 記得指定GUISkin


5.執行
  執行後先按Test按鈕來連接數據庫 , 然後再按"ClickMe"來顯示數據庫內的內容


6.總結
  以上部份是有關連線至數據庫後 ,再將資料用DataSet的方式獲得出來再加以顯示至介面上 , 歡迎各位高手能夠多多批評指教



分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

74

主题

2

听众

3549

积分

中级设计师

Rank: 5Rank: 5

纳金币
-100
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2013-11-23 16:43:46 |只看该作者
有没有访问权限的问题
回复

使用道具 举报

0

主题

1

听众

172

积分

设计实习生

Rank: 2

纳金币
5
精华
0

最佳新人

板凳
发表于 2013-12-1 12:37:07 |只看该作者
顶楼主!!!!!!!!!!!!!!!
回复

使用道具 举报

0

主题

1

听众

477

积分

设计实习生

Rank: 2

纳金币
0
精华
0

最佳新人

地板
发表于 2013-12-1 17:07:48 |只看该作者
感謝芬想喔~~~~~~~~~~~~~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-23 14:57 , Processed in 0.100590 second(s), 30 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部