Unity访问Access数据库

编程知识 行业动态 更新时间:2024-06-13 00:22:45

首先,准备工作:

  1. 创建一个Access 数据库,命名AccessTest.accdb,添加一些数据用于测试


  2. 准备System.Data.dllSystem.EnterpriseServices.dll两个插件,这是访问Access数据需要引用的dll

  3. 如果完成后需要在其他电脑上访问,并且该电脑没有安装Office,就可以要求他安装access访问组件,然后就可以运行了,所有的相应组件与代码,后面都会给一个网盘链接


然后开始创建Unity工程

1.unity工程文件夹Assets同级目录下创建一个SQLData文件夹用来存放Access数据库文件AccessTest.accdb

2.unity工程文件夹Assets目录下创建一个Plugins文件夹用来存放System.Data.dllSystem.EnterpriseServices.dll两个dll文件

3.创建一个功能脚本AccessData.cs,用来访问Access数据库

using System.Data.Odbc;
using System.Data;
using System;
/****************************************
 * 功能:访问access数据库. 
 * 创建: 2015-10-19 _D
 * 
 * *************************************/
public class AccessData  
{
    /// <summary>
    /// 本类对象
    /// </summary>
    private static AccessData accessData;
    /// <summary>
    /// 连接对象
    /// </summary>
    private OdbcConnection con;
    
    /// <summary>
    ///初始化并返回本类对象
    /// </summary>
    /// <returns></returns>
    public static AccessData getInstance()
    {
        if (accessData == null)
        {
            accessData = new AccessData();
            accessData.con = new OdbcConnection();
        }
        return accessData;
    }

    /// <summary>
    /// 数据库连接函数
    /// </summary>
    /// <param name="accessPath">access数据库路径</param>
    public void Connection(string accessPath)
    {
        string connection = "Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=" + accessPath;
        con.ConnectionString = connection;
        try
        {
            if(con.State==ConnectionState.Closed)
                con.Open();
        }
        catch (Exception e)
        {
            throw new Exception(e.Message);
        }
    }

    /// <summary>
    /// 断开与数据库的连接
    /// </summary>
    public void Colse()
    {
        if (con.State != ConnectionState.Closed)
        {
            con.Close();
        }
    }
    /// <summary>
    /// 操作数据库
    /// </summary>
    /// <param name="sql">sql语句</param>
    /// <param name="dataTableName">返回的DataTable的名称</param>
    /// <returns></returns>
    public DataTable OperateAccess(string sql, string dataTableName)
    {
        OdbcCommand cmd = new OdbcCommand(sql,con);
        DataTable dt = new DataTable(dataTableName);
        OdbcDataReader reader = cmd.ExecuteReader();
        dt.Load(reader);
        reader.Close();
        return dt;
    }
}
4. 创建一个测试脚本 Test.cs, 用来具体操作 Access 数据库

using UnityEngine;
using System.Collections;
using System.Data;

public class Test : MonoBehaviour {
   /// <summary>
   /// Access数据库路径
   /// </summary>
   private string accessPath;

	// Use this for initialization
	void Start () {
        accessPath = Application.dataPath;
        int num=accessPath.LastIndexOf("/");
        accessPath = accessPath.Substring(0, num);
        accessPath += "/SQLData/AccessTest.accdb";

        AccessData.getInstance().Connection(accessPath);
	}
    
    string text = "";
	// Update is called once per frame
	void OnGUI () {
        if (GUI.Button(new Rect(0, 0, 100, 30), "查询"))
        {
            string sql = "select * from t_First";
            DataTable dt = AccessData.getInstance().OperateAccess(sql, "select_t_First");

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    text +=dt.Columns[j].ColumnName + ":" + dt.Rows[i][dt.Columns[j].ColumnName]+" ";
                }
                text += "\n";
            }
        }
        GUI.Label(new Rect(0, 60, 200, 60), text);
	}
}
5.将 Test 脚本绑定在场景物体中,运行测试

更多推荐

Unity访问Access数据库

本文发布于:2023-04-03 04:32:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/128df1be6497ccd804f7054e800a4728.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数据库   Unity   Access

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!