Unity访问Access数据库
首先,准备工作:
创建一个Access 数据库,命名AccessTest.accdb,添加一些数据用于测试
准备System.Data.dll与System.EnterpriseServices.dll两个插件,这是访问Access数据需要引用的dll
如果完成后需要在其他电脑上访问,并且该电脑没有安装Office,就可以要求他安装access访问组件,然后就可以运行了,所有的相应组件与代码,后面都会给一个网盘链接
然后开始创建Unity工程
1.在unity工程文件夹Assets同级目录下创建一个SQLData文件夹用来存放Access数据库文件AccessTest.accdb
2.在unity工程文件夹Assets目录下创建一个Plugins文件夹用来存放System.Data.dll与System.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数据库的更多相关文章
- ADO访问Access数据库错误解决心得随笔
最近在用ADO访问Access数据库的时候出现了一个奇怪的错误,觉得有必要记录下来,和大家分享一下. 环境 win7 x86系统: VS2012编译器: Office2010: Access2000~ ...
- [转载]Unity3D 访问Access数据库
在开始这个小教程之前呢,其实在网上你已经可以找到相关的资料了,但是我还是要把我自己做练习的一点东西分享出来.写这个教程的主要原因呢,是一个朋友在u3d的官网论坛里,找到了这个demo,但是在他使用的过 ...
- 如何使用.net访问Access数据库 (转)
前言:今天整理程序,看到之前写的一个Demo,也不知道是从哪里参考的了,写到这里,留作备用吧. 使用.net访问Access数据库:1.BL层:新增一个DataAccess类. Code].Defau ...
- Excel中使用VBA访问Access数据库
VBA访问Access数据库 1. 通用自动化语言VBA VBA(Visual Basic For Application)是一种通用自动化语言,它可以使Excel中的常用操作自动化,还可以创建自定义 ...
- C#.NET ORM 如何访问 Access 数据库 [FreeSql]
最近很多 .net QQ 群无故被封停,特别是 wpf 群几乎全军覆没.依乐祝的 .net6交流群,晓晨的 .net跨平台交流群,导致很多码友流离失所无家可归,借此机会使用一次召唤术,有需要的请加群: ...
- vc访问ACCESS数据库
在现代软件开发中,数据库技术被越来越广泛应用,很多项目都存在着大量的数据需要存储,通常都会采用数据库来存储这些数据.最初,数据库厂商推出一个新的数据库产品时,相应的,他会为程序员提供一套访问该数据库的 ...
- Jackcess 1.2.13 发布,Java 访问 Access 数据库
Jackcess 1.2.13 包含新的方法用于在数据库和附件内容解码中查找复杂值类型的关系,修复了 CodeHandler 相关的一些小 bug. Jackcess 是一个Java 类库,用来读写微 ...
- 访问Access数据库(有多个数据库时 体现多态)
如果想编写单机版MIS.小型网站等对数据库性能要求不高的系统,又不想安装SQLServer,可以使用Access(MDAC),只要一个mdb文件就可以了.使用Access创建mdb文件,建表.OleD ...
- golang ODBC 访问access数据库(问题解决之心理路程)
最近项目需要,需要操作access,以前是用VC++ OLE访问,网络用ACE库,感觉很庞大...决定用go试试 网上用的最多的就是这个https://github.com/weigj/go-odbc ...
随机推荐
- Django中过期@cache_page中缓存的views数据
django的缓存系统中,cache_page 这个装饰器非常好用,只要添加一个装饰器就可以缓存views的响应内容,但是django没有提供过期这个views缓存数据的功能. @cache_page ...
- ZooKeeper之(六)应用实例
6.1 Java API 客户端要连接 Zookeeper服务器可以通过创建 org.apache.zookeeper.ZooKeeper 的一个实例对象,然后调用这个类提供的接口来和服务器交互. Z ...
- 在Spring Boot框架下使用WebSocket实现消息推送
Spring Boot的学习持续进行中.前面两篇博客我们介绍了如何使用Spring Boot容器搭建Web项目(使用Spring Boot开发Web项目)以及怎样为我们的Project添加HTTPS的 ...
- oracle手工生成AWR报告方法记录
AWR(Automatic Workload Repository)报告是我们进行日常数据库性能评定.问题SQL发现的重要手段.熟练掌握AWR报告,是做好开发.运维DBA工作的重要基本功. AWR报告 ...
- J2EE进阶(十八)基于留言板分析SSH工作流程
J2EE进阶(十八)基于留言板分析SSH工作流程 留言板采用SSH(Struts1.2 + Spring3.0 + Hibernate3.0)架构. 工作流程(以用户登录为例): 首先是用 ...
- Android艺术开发探索第三章——View的事件体系(上)
Android艺术开发探索第三章----View的事件体系(上) 我们继续来看这本书,因为有点长,所以又分了上下,你在本片中将学习到 View基础知识 什么是View View的位置参数 Motion ...
- PhysicsJoint
1 PhysicsJoint的使用 T09Join.h #ifndef__T09Joint_H__ #define__T09Joint_H__ #include"T32.h" cl ...
- 带你深入理解STL之Set和Map
在上一篇博客带你深入理解STL之RBTree中,讲到了STL中关于红黑树的实现,理解起来比较复杂,正所谓前人种树,后人乘凉,RBTree把树都种好了,接下来就该set和map这类关联式容器来" ...
- 有两个序列a,b,大小都为n,序列元素的值是任意整数,无序。
要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小. 例如: var a=[100,99,98,1,2, 3]; var b=[1, 2, 3, 4,5,40]. in ...
- 手机微博(weibo.cn)模拟登录及页面解析
package com.laudandjolynn.test; import java.io.IOException; import java.io.OutputStream; import java ...