查看: 834|回复: 0
打印 上一主题 下一主题

[其他] Unity3d 连接 MySQL 数据库(使用DataSet)

[复制链接]

2317

主题

54

听众

2万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
20645
精华
62

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

跳转到指定楼层
楼主
发表于 2015-9-30 01:45:41 |只看该作者 |倒序浏览

  1. using UnityEngine;

  2.   using System;

  3.   using System.Collections;

  4.   using System.Data;

  5.   using MySql.Data.MySqlClient;

  6.   public class CMySql : MonoBehaviour {

  7.   // Global variables

  8.   public static MySqlConnection dbConnection;//Just like MyConn.conn in StoryTools before

  9.   static string host = “192.168.1.100”;

  10.   static string id = “mysql”;

  11.   static string pwd = “123456”;

  12.   static string database = “test”;

  13.   static string result = “”;

  14.   private string strCommand = “Select * from unity3d_test ORDER BY id;”;

  15.   public static DataSet MyObj;

  16.   void OnGUI()

  17.   {

  18.   host = GUILayout.TextField( host, 200, GUILayout.Width(200));

  19.   id = GUILayout.TextField( id, 200, GUILayout.Width(200));

  20.   pwd = GUILayout.TextField( pwd, 200, GUILayout.Width(200));

  21.   if(GUILayout.Button(“Test”))

  22.   {

  23.   string connectionString = string.Format(“Server = {0}; Database = {1}; User ID = {2}; Password = {3};”,host,database,id,pwd);

  24.   openSqlConnection(connectionString);

  25.   MyObj = GetDataSet(strCommand);

  26.   }

  27.   GUILayout.Label(result);

  28.   }

  29.   // On quit

  30.   public static void OnApplicationQuit() {

  31.   closeSqlConnection();

  32.   }

  33.   // Connect to database

  34.   private static void openSqlConnection(string connectionString) {

  35.   dbConnection = new MySqlConnection(connectionString);

  36.   dbConnection.Open();

  37.   result = dbConnection.ServerVersion;

  38.   //Debug.Log(“Connected to database.”+result);

  39.   }

  40.   // Disconnect from database

  41.   private static void closeSqlConnection() {

  42.   dbConnection.Close();

  43.   dbConnection = null;

  44.   //Debug.Log(“Disconnected from database.”+result);

  45.   }

  46.   // MySQL Query

  47.   public static void doQuery(string sqlQuery) {

  48.   IDbCommand dbCommand = dbConnection.CreateCommand();

  49.   dbCommand.CommandText = sqlQuery;

  50.   IDataReader reader = dbCommand.ExecuteReader();

  51.   reader.Close();

  52.   reader = null;

  53.   dbCommand.Dispose();

  54.   dbCommand = null;

  55.   }

  56.   #region Get DataSet

  57.   public  DataSet GetDataSet(string sqlString)

  58.   {

  59.   //string sql = UnicodeAndANSI.UnicodeAndANSI.UnicodeToUtf8(sqlString);

  60.   DataSet ds = new DataSet();

  61.   try

  62.   {

  63.   MySqlDataAdapter da = new MySqlDataAdapter(sqlString, dbConnection);

  64.   da.Fill(ds);

  65.   }

  66.   catch (Exception ee)

  67.   {

  68.   throw new Exception(“SQL:” + sqlString + “\n” + ee.Message.ToString());

  69.   }

  70.   return ds;

  71.   }

  72.   #endregion

  73.   }

  74. using UnityEngine;

  75.   using System;

  76.   using System.Collections;

  77.   using System.Data;

  78.   public class DataBaseTest : MonoBehaviour {

  79.   public GUISkin myGUISkin = new GUISkin();

  80.   string strID = “”;

  81.   string strName = “”;

  82.   string strSex = “”;

  83.   int Index = 1;

  84.   // Use this for initialization

  85.   void Start () {

  86.   }

  87.   void OnGUI()

  88.   {

  89.   GUI.skin = myGUISkin;

  90.   if (GUI.Button(new Rect(100,320,100,100),“Click Me”))

  91.   {

  92.   foreach(DataRow dr in CMySql.MyObj.Tables[0].Rows)

  93.   {

  94.   if (Index.ToString() == dr[“ID”].ToString())

  95.   {

  96.   strID = dr[“ID”].ToString();

  97.   strName =  dr[“Name”].ToString();

  98.   strSex = dr[“Sex”].ToString();

  99.   break;

  100.   }

  101.   }

  102.   Index++;

  103.   if(Index > 5)

  104.   {

  105.   Index = 1;

  106.   }

  107.   }

  108.   GUI.Label(new Rect(320,100,150,70),“DataBaseTest”);

  109.   GUI.Label(new Rect(300,210,150,70),strID);

  110.   GUI.Label(new Rect(300,320,150,70),strName);

  111.   GUI.Label(new Rect(300,430,150,70),strSex);

  112.   }

  113.   }
复制代码
2.导入dll

  同先前的帖子 , 将MySql.data.dll Import至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按钮来连接数据库 , 然后再按“Click Me”来显示数据库内的内容

  6.总结

  以上部份是有关连线至数据库后 , 再将资料用DataSet的方式获得出来再加以显示至介面上。
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

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

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

GMT+8, 2025-8-2 01:49 , Processed in 0.070195 second(s), 28 queries .

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

© 2008-2019 Narkii Inc.

回顶部