Unity引擎链接mySQL数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
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.建立數據庫內容
  主要是因為代碼中的這段內容

1
2
3
4
5
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的方式獲得出來再加以顯示至介面上 , 歡迎各位高手能夠多多批評指教

转自:http://www.cnblogs.com/lm3515/archive/2010/09/30/1839416.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值