在開始這個小教程以前呢,其實在網上你已經能夠找到相關的資料了,可是我仍是要把我本身作練習的一點東西分享出來。寫這個教程的主要緣由呢,是一個朋友在u3d的官網論壇裏,找到了這個demo,可是在他使用的過程當中遇到了問題,我看了給他解決掉以後,爲了其餘朋友不至於發生同類的問題,特在此嘮叨一番。在開始主題以前呢,我真的想說,北京的公交太不給力了,我這幾天,每次等公交都要一個多小時,直接崩潰中。好,閒話不扯啦!下面開始個人教程之旅吧!
Access數據庫呢,是一個輕量級的數據庫,之前在學習.net應用開發的時候瞭解過。在pc的軟件開發中,不少時候,咱們存儲的數據量不會很大的狀況都會選擇他,主要他輕量級,容易部署。更多Access的問題,能夠去微軟的官網查看。
在U3D中要訪問Access數據庫,咱們須要用到兩個dll,System.Data.dll和System.EnterpriseServices.dll,缺一不可。咱們找到這兩個dll放到u3d的Plugins文件夾下面。sql
/* |------------------------------------------- * |做者:Mr.野豬 * | * |時間:2012/09/26 晚:23:56 * | * |目的:用於技術交流 * |------------------------------------------ */ using UnityEngine; using System.Collections; //引入命名空間 using System; using System.Data; using System.Data.Odbc; public class RaderData : MonoBehaviour { /// <summary> /// 聲明一個接受讀取數據字段值的變量 /// </summary> string text = string.Empty; public void Start() { //讀取數據文件。 ReadStudent(Application.dataPath + "/Wild boar.accdb"); } /// <summary> /// 讀取表數值的函數 /// </summary> /// <param name="filetoread">數據文件的路徑</param> internal void ReadStudent(string filetoread) { //聲明鏈接數據庫的字段 string connection = "Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=" + filetoread; //從表中查詢全部數據 string sqlQuery = "select * from Student"; //打開數據庫 OdbcConnection con = new OdbcConnection(connection); //對數據庫進行操做 OdbcCommand cmd = new OdbcCommand(sqlQuery,con); //根據表名,讀取數據到一個臨時表 DataTable dt = new DataTable("Student"); //try catch finally進行了異常處理,這個是好習慣,嘿嘿 try { //打開數據庫 con.Open(); //讀取數據 OdbcDataReader reader = cmd.ExecuteReader(); //把數據加載到臨時表 dt.Load(reader); //在使用完畢以後,必定要關閉,要否則會出問題 reader.Close(); //關閉數據庫 con.Close(); } catch (Exception ex) { Debug.Log(ex.ToString()); } finally { //判斷數據庫是否打開,若是打開就關閉。 if (con.State!=ConnectionState.Closed) { con.Close(); } //釋放數據庫資源 con.Dispose(); } if (dt.Rows.Count>0) { //讀取數據 for (int i = 0; i < dt.Rows.Count; i++) { text = dt.Columns[0].ColumnName + " : " + dt.Rows[dt.Columns[0].ColumnName].ToString() + " | " + dt.Columns[1].ColumnName + " : " + dt.Rows[dt.Columns[1].ColumnName].ToString() + " | " + dt.Columns[2].ColumnName + " : " + dt.Rows[dt.Columns[2].ColumnName].ToString() + " | " + dt.Columns[3].ColumnName + " : " + dt.Rows[dt.Columns[3].ColumnName].ToString(); Debug.Log(dt.Columns[0].ColumnName + " : " + dt.Rows[dt.Columns[0].ColumnName].ToString() + " | " + dt.Columns[1].ColumnName + " : " + dt.Rows[dt.Columns[1].ColumnName].ToString() + " | " + dt.Columns[2].ColumnName + " : " + dt.Rows[dt.Columns[2].ColumnName].ToString() + " | " + dt.Columns[3].ColumnName + " : " + dt.Rows[dt.Columns[3].ColumnName].ToString()); } } } public void OnGUI() { GUI.Label(new Rect(10,10,500,200),text); } }