6.9 KiB
.net 操作 Access 数据库
一、前提条件
- 安装 Office 软件,必须包括Access程序
安装 Office Access 是.net(.net core)程序操作Access数据库的基础。 在执行.net操作Access数据的程序的系统中,必须先安装Office Access。
- 安装 AccessDatabaseEngine
是微软 Access 数据库引擎可再发行程序包,顾名思义是微软的access数据库调用引擎。 .net 程序通过调用此引擎,操作Access数据数据库。
特别注意 32位与64位版本问题
32位操作系统上,只能安装32位Office Access;64位操作系统可以安装64位Office Access与32位Office Access之一。
AccessDatabaseEngine需要与 Office Access保持一致:即32位Office安装32位DatabaseEngine,64位Office安装64位DatabaseEngine。
.net程序最好与office位数保持一致:在安装了32位Access的系统上运行32位.net程序,在安装了64位Access系统上运行64位.net程序。在不一致的情况下,可能出错,更改编译或发布时CPU选项(AnyCPU x86 x64)有助于解决问题。 目前找到了AccessDatabaseEngine2010版与AccessDatabaseEngine2016版,后者能调用最新版的Access 2019.
二、操作类库
-
System.Data.Odbc 类库
ODBC(Open Database Connectivity)即开放数据库互连,是一种早期数据库接口技术,实际上是ADO的前身。 早期,每个数据库的格式都不一样,开发者得对他们所开发的每种数据库的底层API有深刻的了解. 因此,能处理各种各样数据库的通用的API就应运而生了. 也就是现在的ODBC。遵从了这种标准的数据库,被称为ODBC兼容的数据库. 可以直接使用系统配置好的三种DNS:用户dsn、系统dsn和文件dsn;也可以完全由程序设定连接信息。
-
System.Data.OleDb 类库
OLEDB(对象连接和嵌入数据库)是微软的一个战略性系统级编程接口,用于管理整个组织内的数据。 OLEDB是建立在ODBC功能之上的一个开放规范。 ODBC是为访问关系型数据库而专门开发的,OLEDB则用于访问关系型和非关系型信息源. OLEDB定义了一组COM接口,对各种数据库管理系统服务进行封装,并允许创建软件组件,实现这些服务。 OLEDB组件包括数据提供程序(包含和表现数据)、数据使用者(使用数据)和服务组件(处理和传送数据,例如,查询处理器和游标引擎)。 OLEDB接口有助于平滑地集成组件,这样,OLEDB组件厂商就可以快速地向市场提供高质量OLEDB组件。 此外,OLEDB包含了一个连接ODBC的“桥梁”,对现用的各种ODBC关系型数据库驱动程序提供一贯的支持。---号称取代odbc,但也兼容odbc
区别与联系:
- Oledb建立在ODBC之上;
- ODBC为关系数据库专用;Oledb则同时支持关系数据库和非关系数据库(主机ISAM/VSAM和层次数据库、电子邮件和文件系统存储,文本、图形和地理数据以及自定义业务对象).
- Oledb编程方面可以取代ODBC
- Oledb兼容ODBC
结论:优先使用Oledb
层级关系
应用程序 -> ADO -> ODBC -> 数据源
应用程序 -> ADO -> OLE DB -> 数据源
四、连接字符串
程序中有两种方式:直接使用连接字符串;使用连接构建器OdbcConnectionStringBuilder或者OleDbCommandBuilder
注意:Access2007之后与之前版本,连接字符串有区别,以下以高版本为示子。具体查看
- ODBC连接字符串
- Access
- 系统dsn: DSN=dsnname 或者:DSN=dsnname;UID=xx;PWD=xxx;
- 文件dsn: FILEDSN=c:\myDsnFile.dsn;Uid=myUsername;Pwd=;
- 标准连接:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\mydatabase.mdb;
- 标准安全:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\mydatabase.accdb;Uid=Admin;Pwd=;
- 工作组:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\mydatabase.accdb;SystemDB=C:\mydatabase.mdw;
- 独占模式:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\mydatabase.accdb;Exclusive=1;Uid=admin;Pwd=;
- 文本文件连: Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=c:\txtFilesFolder;Extensions=asc,csv,tab,txt;
- Excel: Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=C:\MyExcel.xlsx;
- SQL Server 2019: Driver={ODBC Driver 17 for SQL Server};Server=myServerAddress;Database=myDataBase;UID=myUsername;PWD=myPassword;
- SQL Server windows连接:Driver={ODBC Driver 17 for SQL Server};Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;
- MySQL:Driver={MySQL ODBC 5.2 UNICODE Driver};Server=localhost;Database=myDataBase;User=myUsername;Password=myPassword;Option=3;
- PostSQL:Driver={PostgreSQL UNICODE};Server=IP address;Port=5432;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
- Oracle:Driver={Microsoft ODBC for Oracle};Server=myServerAddress;Uid=myUsername;Pwd=myPassword;
- Access
- OLEDB连接字符串
- Microsoft Jet OLE DB 4.0:老版本支持Office2003及之前
- 标准安全: Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;User Id=admin;Password=;
- 数据库密码: Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;Jet OLEDB:Database Password=MyDbPassword;
- 工作组:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;Jet OLEDB:System Database=system.mdw;
- 系统数据库:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;Jet OLEDB:System Database=system.mdw;User ID=myUsername;Password=myPassword;
- DataDirectory功能:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\myDatabase.mdb;User Id=admin;Password=;
- 网络位置:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\serverName\shareName\folder\myDatabase.mdb;User Id=admin;Password=;
- 使用RDS(MS远程-通过HTTP访问数据库。您必须在服务器上设置RDS才能工作):Provider=MS Remote;Remote Provider=Microsoft.Jet.OLEDB.4.0;Remote Server=http://server.adress.com;Data Source=d:\myPath\myDatabase.mdf;
- 独占访问权限:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;Mode=Share Exclusive;User Id=admin;Password=;
- Microsoft Jet OLE DB 12.0:新版 本支持Office2007及之后的版本
- 标准安全: Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;Persist Security Info=False;
- 数据库密码: Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;Jet OLEDB:Database Password=MyDbPassword;
- DataDirectory功能:Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\myAccessFile.accdb;Persist Security Info=False;
- 网络位置:Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\server\share\folder\myAccessFile.accdb;
- Microsoft Jet OLE DB 4.0:老版本支持Office2003及之前