zoukankan      html  css  js  c++  java
  • Unity访问Access数据库

    首先,准备工作:

    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 += "
    ";
                }
            }
            GUI.Label(new Rect(0, 60, 200, 60), text);
    	}
    }
    
    5.将Test脚本绑定在场景物体中,运行测试
  • 相关阅读:
    css解决display:inline-block;产生的缝隙(间隙)
    js二进制与十进制互转
    js获取HTTP的请求头信息
    安装WampServer时出现的问题(丢失VCRUNTIME140.dll或MSVCR110.dll)以及解决办法
    学习安装并配置前端自动化工具Gulp
    解决overflow:hidden在安卓微信页面没有效果的办法
    Python 调用 ES、Solr、Phoenix
    Python 调用 Hprose接口、Dubbo接口、Java方法
    Python调用Redis
    robot用例执行常用命令(转)
  • 原文地址:https://www.cnblogs.com/liang123/p/6325900.html
Copyright © 2011-2022 走看看