- 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;
- 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
- }
C#代码:
- 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);
- }
- }
- 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底下 , 然后再到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的方式获得出来再加以显示至介面上 , 欢迎各位高手能够多多批评指教