查看: 1037|回复: 1
打印 上一主题 下一主题

连接 MySQL (使用DataSet)_转载

[复制链接]

2508

主题

2

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
32806
精华
12

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

跳转到指定楼层
楼主
发表于 2012-6-29 14:22:25 |只看该作者 |倒序浏览



    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 + "
" + ee.Message.ToString());

     
            }

     
            return ds;

     
      

     
        }

     
        #endregion

     
    }


复制代码
/*

...本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/nette/archive/2009/07/30/4394849.aspx

*/





另一段代码



    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.dll Import至Assets底下 , 然後再到UnityEditorDataFrameworksMono.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按鈕來連接數據庫 , 然後再按"Click Me"來顯示數據庫內的內容



6.總結

  以上部份是有關連線至數據庫後 , 再將資料用DataSet的方式獲得出來再加以顯示至介面上 .





转自 http://bbs.vrsh.cn/viewthread.ph ... 26amp%3Btypeid%3D43
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

2317

主题

54

听众

2万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
20645
精华
62

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

沙发
发表于 2012-12-30 04:14:57 |只看该作者
学习了,虽然还是有难度,谢谢楼主的用心
回复

使用道具 举报

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

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

GMT+8, 2025-7-22 06:30 , Processed in 0.066994 second(s), 29 queries .

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

© 2008-2019 Narkii Inc.

回顶部