生活随笔
收集整理的這篇文章主要介紹了
Unity3D 访问Access数据库
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Unity3D 訪問Access數據庫
在開始這個小教程之前呢,其實在網上你已經可以找到相關的資料了,但是我還是要把我自己做練習的一點東西分享出來。寫這個教程的主要原因呢,是一個朋友在u3d的官網論壇里,找到了這個demo,但是在他使用的過程中遇到了問題,我看了給他解決掉之后,為了其他朋友不至于發生同類的問題,特在此嘮叨一番。在開始主題之前呢,我真的想說,北京的公交太不給力了,我這幾天,每次等公交都要一個多小時,直接崩潰中。好,閑話不扯啦!下面開始我的教程之旅吧!
Access數據庫呢,是一個輕量級的數據庫,以前在學習.net應用開發的時候了解過。在pc的軟件開發中,很多時候,我們存儲的數據量不會很大的情況都會選擇他,主要他輕量級,容易部署。更多Access的問題,可以去微軟的官網查看。
在U3D中要訪問Access數據庫,我們需要用到兩個dll,System.Data.dll和System.EnterpriseServices.dll,缺一不可。我們找到這兩個dll放到u3d的Plugins文件夾下面。
下面我們創建一個Access數據庫版本是07樣式是*.accdb(03版本的Access數據庫的樣式為*.mdb)在我們進行code的時候,要根據不同的版本進行判斷啦,對于不同的Access數據庫版本,我們要對應不懂的文件后綴名。要不然會提示你數據庫文件是未知文件。 下面是讀取Access的一個demo,其他的修改,添加數據都是在修改他的sql語句啦,相關的知識,可以查看Access在.net中如何對Access進行CURD操作的。簡單的代碼如下: 復制代碼
/* |-------------------------------------------* |作者: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);????}}
下一步,我們生成exe文件.執行完畢之后,我們打開生成的程序截圖如下:
為什么會出現這個問題。我在u3d里面看到了他的顯示啊,如下:
其實呢,我們在部署的時候,要把數據庫文件,copy到生成的文件夾下就可以啦!
再次運行程序,查看效果。如下:
好,看到這里,你應該只到了,我今天重點要說的就是這個問題啦! 下面是我在制作demo時,遇到的問題還有些是我特意測試需要注意的地方:
注意: 1. 一定要記住的是,訪問Access數據庫時,那兩個dll缺一不可,缺少就會出現問題。 2. 在帶有dll動態鏈接庫的項目,要在打包時設置他的API兼容層級為.NET 2.0。 3. 使用不同版本的Access數據庫要對應不同版本相對應的后綴名。 4. 如果想單獨創建一個存放Access數據庫的文件夾,你需要在code時,找到這個文件夾,然后打包之后,把你的Access數據庫放到與code相對應的位置。要不然,檢測不到數據庫。 5. 在創建數據庫時要認真,嘿嘿,有可能是你的文件名字和后綴名之間多個空格,你的數據也會讀不出,在u3d中運行,會提示你未知文件。 6. 就是老生常談的話題了,sql查詢語句一定要記住,拼寫正確,標點符號也要對應起來,要不然,出現個小問題,會讓你DT好久。曾經在做應用時,也DT過。嘿嘿! 就先總結這幾點吧!有什么問題,我們在一塊交流進步啦! 最后還想說,在我逃離IT之前,我會努力的前行,為了我可以早點離開!
轉載于:https://www.cnblogs.com/xiao-wei-wei/archive/2013/03/23/2976585.html
總結
以上是生活随笔為你收集整理的Unity3D 访问Access数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。