在开始这个小教程以前呢,其实在网上你已经能够找到相关的资料了,可是我仍是要把我本身作练习的一点东西分享出来。写这个教程的主要缘由呢,是一个朋友在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); } }