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