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

[其他] 如何在unity3d中收藏连接数据库

[复制链接]

1557

主题

1

听众

1万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
454
精华
31

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

跳转到指定楼层
楼主
发表于 2013-10-10 16:37:47 |只看该作者 |倒序浏览

Unity 3D中如何收藏链接数据库呢?下面我们来学习相关的知识吧。

    首先是编辑C#代码:

*/

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";//这里是你自己的数据库的用户名字,我一开始想用root,发现不行,后来添加了新的用户才可以

     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);


}

}


   然后再导入dll,将MySql.data.dll Import至Assets底下 , 然后再到Unity\Editor\Data\Frameworks\Mono.framework 中,再将System.Data.dll 也一起Import至Assets內。

     第三步是建立数据库的内容,主要是代码中的这段内容

     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,然后建立一个名为testDatabase , 这个test下建立一张table , 为unity3d_test ,,接下來就为这张unity3d_test建立3个栏位,分别是ID , Name , Sex ,再来自行填入五份资料。

   第四步是建立GameObject,然后,将上面两个脚本挂上去, 如果有建立GUISkin , 需要制定GUISkin。

   最后是执行,先按Test按钮来连接数据库 , 然后再按"Click Me"来显示数据库内容就完成了。


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

使用道具 举报

0

主题

1

听众

1174

积分

助理设计师

Rank: 4

纳金币
92
精华
0
沙发
发表于 2014-5-7 04:17:52 |只看该作者
感謝分享!
回复

使用道具 举报

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

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-5-21 04:37 , Processed in 0.094733 second(s), 31 queries .

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

© 2008-2019 Narkii Inc.

回顶部