C#实现对Access数据库的通用操作
一、实现效果
1.1、实现功能
①实现创建Access数据库;
②实现创建指定Access数据库的表;
③实现给Access数据库的指定表【插入、查询、更新、删除、分页查询】数据;
④实现获取Access数据库中的所有表名称及其表包含的所有列名称
1.2、效果图
二、实现核心
该项目的完整工程下载地址如下:Access数据库操作项目的完整工程下载地址https://download.csdn.net/download/xiaochenXIHUA/85163940
2.1、添加引用
在项目中添加【Microsoft ActiveX Data Objects 6.0 Library】和【Microsoft ADO Ext.6.0 for DDL and Security】引用,如下图所示。
注意事项:
引入这两个Com组件后,在使用【ADOX.CatalogClass】报如下图的错误时;只用选中【Interop.ADOX】,然后在属性下的【嵌入互操作类型-->修改为否】即可解决,如下图所示:
2.2、Access数据帮助类
这里Access数据库帮助类的部分内容,如下所示:
/***
* Title:"轻量数据库" 项目
* 主题:Access数据库的帮助类
* Description:
* 功能:
* ①构造函数时可以创建Access指定的连接字符串
* ②创建Access的mdb类型数据库
* Date:2022
* Version:0.1版本
* Author:Coffee
* Modify Recoder:
*/using LiteDBHelper.Model;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data.OleDb;
using System.IO;
using System.Text;namespace LiteDBHelper
{public class AccessDBHelper{#region 基础参数//数据库连接字符串private string _ConnStr;//获取到数据库连接字符串public string ConnStr { get { return _ConnStr; } }#endregion #region 构造函数/// <summary>/// mdb文件的连接字符串构造函数/// </summary>/// <param name="connnection"></param>public AccessDBHelper(string connnection){if (string.IsNullOrEmpty(connnection)) return;_ConnStr = connnection;}/// <summary>/// mdb文件无用户名和密码构造函数/// </summary>/// <param name="mdbFilePathAndName">mdb文件的路径和名称(比如:@"D:\\HalmEL\\2022-4-11.mdb")</param>public AccessDBHelper(string mdbFilePathAndName,AccessDBType accessDBType){if (string.IsNullOrEmpty(mdbFilePathAndName)) return;string strDriver = GetDirverOfAccessDBType(accessDBType);_ConnStr = $"{strDriver};Data source={mdbFilePathAndName};";InstanceSqlHelper(_ConnStr);}#endregion#region 创建Access数据库、表及其字段/// <summary>/// 创建Mdb数据库/// </summary>/// <param name="mdbFilePathAndName">mdb文件的路径和名称(比如:@"D:\\HalmEL\\2022-4-11.mdb")</param>/// <returns>返回创建结果</returns>public ResultInfo CreateMdbDataBase(string mdbFilePathAndName){ResultInfo resultInfo = new ResultInfo();if (File.Exists(mdbFilePathAndName)){resultInfo.ResultStatus = ResultStatus.Success;resultInfo.Message = $"{mdbFilePathAndName} 文件已经存在!";}try{//如果目录不存在,则创建目录string folder = Path.GetDirectoryName(mdbFilePathAndName);if (!Directory.Exists(folder)){Directory.CreateDirectory(folder);}//创建Catalog目录类ADOX.CatalogClass catalog = new ADOX.CatalogClass();//根据联结字符串使用Jet数据库引擎创建数据库catalog.Create(_ConnStr);catalog = null;resultInfo.ResultStatus = ResultStatus.Success;resultInfo.Message = $"{mdbFilePathAndName} 文件创建成功!";}catch (Exception ex){resultInfo.ResultStatus = ResultStatus.Error;resultInfo.Message = $"{ex.Message}";}return resultInfo;}/// <summary>/// 创建mdb表(字段都是短文本类型)/// </summary>/// <param name="mdbFilePathAndName">mdb文件的路径和名称(比如:@"D:\\HalmEL\\2022-4-11.mdb")</param>/// <param name="tableName">表名称</param>/// <param name="fieldNameList">表字段名称列表</param>/// <returns></returns>public ResultInfo CreateMdbTable(string mdbFilePathAndName, string tableName, List<string> fieldNameList){ResultInfo resultInfo = new ResultInfo();if (string.IsNullOrEmpty(mdbFilePathAndName) || string.IsNullOrEmpty(tableName)|| fieldNameList == null || fieldNameList.Count < 1){resultInfo.SetContent(ResultStatus.Error, "内容为空,请检查!", null);return resultInfo;}ADOX.CatalogClass catalog = new ADOX.CatalogClass();ADODB.Connection connection = new ADODB.Connection();try{//打开数据库连接connection.Open(_ConnStr, null, null, -1);catalog.ActiveConnection = connection;//新建一个表ADOX.TableClass table = new ADOX.TableClass();table.ParentCatalog = catalog;table.Name = tableName;int fieldCount = fieldNameList.Count;for (int i = 0; i < fieldCount; i++){//增加一个文本字段string fieldName = fieldNameList[i].ToString();ADOX.ColumnClass column = new ADOX.ColumnClass();column.ParentCatalog = catalog;column.Name = fieldName;column.Properties["Jet OLEDB:Allow Zero Length"].Value = false;//table.Columns.Append(column, ADOX.DataTypeEnum.adLongVarChar, 100);table.Columns.Append(fieldName, ADOX.DataTypeEnum.adVarWChar, 106);}//将创建的表加入数据库catalog.Tables.Append(table);table = null;catalog = null;resultInfo.SetContent(ResultStatus.Success, $"创建:{tableName} 表成功", null);}catch (Exception ex){resultInfo.SetContent(ResultStatus.Error, $"{ex.Message}", null);}finally{//关闭连接connection.Close();}return resultInfo;}#endregion#region 私有方法/// <summary>/// 根据Access类型返回对应的驱动/// </summary>/// <param name="accessDBType">Access数据库类型</param>/// <returns></returns>private string GetDirverOfAccessDBType(AccessDBType accessDBType){string connStr = $"Microsoft.ACE.OLEDB.12.0";switch (accessDBType){case AccessDBType.Is2007AndLater:connStr = $"Provider=Microsoft.ACE.OLEDB.12.0";break;case AccessDBType.Is2003AndBefore:connStr = $"Provider=Microsoft.Jet.OLEDB.4.0";break;default:break;}return connStr;}#endregion }//Class_end/// <summary>/// Access数据库类型/// </summary>public enum AccessDBType{//2007及其更高的版本Is2007AndLater,//2003等之前的版本Is2003AndBefore,}}
2.3、关于未注册Microsoft.ACE.OLEDB.12.0解决办法
程序报错“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”解决办法https://blog.csdn.net/xiaochenXIHUA/article/details/124031921?spm=1001.2014.3001.5501
三、其他的相关资料
DataTypeEnum - ActiveX Data Objects (ADO) | Microsoft Docshttps://docs.microsoft.com/zh-cn/sql/ado/reference/ado-api/datatypeenum?view=sql-server-ver15Access 桌面数据库的数据类型 (microsoft.com)https://support.microsoft.com/zh-cn/office/access-%E6%A1%8C%E9%9D%A2%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B-df2b83ba-cef6-436d-b679-3418f622e482#ID0EBBD=Office_2007_-_2010INSERT INTO 语句 (Microsoft Access SQL) | Microsoft Docshttps://docs.microsoft.com/zh-cn/office/client-developer/access/desktop-database-reference/insert-into-statement-microsoft-access-sql概念(Access VBA 参考) | Microsoft Docshttps://docs.microsoft.com/zh-cn/office/vba/access/concepts/miscellaneous/concepts-access-vba-reference\t \r \n转义字符https://www.cnblogs.com/lsqbk/p/10259044.html
C#实现对Access数据库的通用操作相关推荐
- C#实现对Sqlite数据库的通用操作
一.实现效果 1.1.实现功能 ①实现创建Sqlite数据库; ②实现创建指定Sqlite数据库的表; ③实现给Sqlite数据库的指定表[插入.查询.更新.删除.分页查询]数据; ④实现获取Sqli ...
- java access远程连接_Java程序实现对access数据库的远程访问
第四步:在其它计算机中运行测试代码 1. 程序中需要数据提供驱动程序,如: Class.forName("org.objectweb.rmijdbc.Driver").newIn ...
- java poi读取word中附件_java用poi实现对word读取和修改操作
java编程要实现对word的操作没有vb那种编程语言来得容易,得借助一些开源组件,其中就包括jacob.poi等, 而poi应用得最为广泛,对word2003和2007的读和写word操作都十分方便 ...
- java用poi实现对word读取和修改操作
java编程要实现对word的操作没有vb那种编程语言来得容易,得借助一些开源组件,其中就包括jacob.poi等, 而poi应用得最为广泛,对word2003和2007的读和写word操作都十分方便 ...
- Qt实战案例(28)——利用QSQL相关类实现对MySQL数据库的基本操作及相关设置详解
目录 一.项目介绍 二.项目基本配置 2.1 安装MySQL 2.2 创建Qt项目 2.3 移动libmysql.dll文件 三.UI界面设计 四.主程序实现 4.1 pro文件 4.2 main.c ...
- Go web 开发数据库管理平台,利用远程过程调用(RPC)实现对MySQL数据库的管理和使用
Go web 开发数据库管理平台,利用远程过程调用(RPC)实现对MySQL数据库的管理和使用 前言 做DBA,最基本的工作就是需要管理公司的数据库系统.工作中,常常需要维护的数据库数量是非常多的.小 ...
- java字符串字典排序_java实现对map的字典序排序操作示例
本文实例讲述了java实现对map的字典序排序操作.分享给大家供大家参考,具体如下: java中对map的字典序排序,算法验证比对微信官网https://mp.weixin.qq.com/wiki?t ...
- java8 access_Java语言8 连接Access数据库UCanAccess的操作介绍
本文主要向大家介绍了Java语言8 连接Access数据库UCanAccess的操作介绍,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. Java8 中JDK1.8中不再包含acces ...
- eas数据库 oracle,EAS数据库还原通用操作
EAS数据库还原通用操作 --EAS数据库还原通用操作指导 --以下操作是建立在ORACLE程序已经安装好,ORACLE数据库已经创建好的条件上 --以下的命令符:#或$ 表示在小机系统上执行,同样的 ...
- python如何操作ppt_Python实现对PPT文件进行截图操作的方法
本文实例讲述了Python实现对PPT文件进行截图操作的方法.分享给大家供大家参考.具体分析如下: 下面的代码可以为powerpoint文件ppt进行截图,可以指定要截取的幻灯片页面,需要本机安装了p ...
最新文章
- 解决springboot读取jar包中文件的问题
- %00截断攻击的探索
- bootstrap 空行不显示横杠_电脑开机有显示,但进不去系统
- LwIP 之五 详解动态内存管理 内存堆(mem.c/h)
- C++ Primer 7.33 练习编写成员函数
- The sentence of everyday use
- 实例26:python
- pla3d打印材料密度_3D打印金属材料模型过程中常见问题
- 施一公直播首秀来了!解答读博困惑,鼓励学生勇敢申请西湖大学
- xlrd合并单元格的读取的注意事项
- UE4物理模块(二)---建立物体碰撞
- 夯实基础开新局--全国乡镇党委换届工作进展顺利
- AVPlayer添加播放进度监听
- EDA发展历史及现状
- java beanshell_Java脚本-BeanShell
- 横向合计代码 锐浪报表_巧用锐浪报表:用报表脚本实现动态显示小数位数
- iPhone 如何将图片转换为文字
- 怎么发现愿景和目标 | 进击
- 沁春教你怎么在家制作拿铁咖啡!
- mysql idb 恢复_mysql靠idb文件恢复数据
热门文章
- CSS - Iconfont
- 最新友情链接交易平台源码,友链源码,友情链接,友链平台仿alivv爱链网源码下载
- MATLAB/Simulink搭建电动汽车整车七自由度模型
- 记:用notepad2替换系统自带记事本notepad
- 【读书笔记《Android游戏编程之从零开始》】2.Hello,World!
- SCADA数采HAAS数控系统现场实操步骤
- Excel图表之道—如何制作专业有效的商务图表(远离难看的图表,让客户满意,给自己加薪)...
- 微信开发者工具的最详细步骤如下:
- 同济大学 线性代数 第六版 pdf_线性代数同济大学第六版第一章课后习题答案
- 【详细】MySQL之游标