在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,然后建立一个名为test的Database , 在这个test下建立一张table , 为unity3d_test ,,接下來就为这张unity3d_test建立3个栏位,分别是ID , Name , Sex ,再来自行填入五份资料。 第四步是建立GameObject,然后,将上面两个脚本挂上去, 如果有建立GUISkin , 需要制定GUISkin。 最后是执行,先按Test按钮来连接数据库 , 然后再按"Click Me"来显示数据库内容就完成了。
|