一、实现效果

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数据库的通用操作相关推荐

  1. C#实现对Sqlite数据库的通用操作

    一.实现效果 1.1.实现功能 ①实现创建Sqlite数据库; ②实现创建指定Sqlite数据库的表; ③实现给Sqlite数据库的指定表[插入.查询.更新.删除.分页查询]数据; ④实现获取Sqli ...

  2. java access远程连接_Java程序实现对access数据库的远程访问

    第四步:在其它计算机中运行测试代码 1.  程序中需要数据提供驱动程序,如: Class.forName("org.objectweb.rmijdbc.Driver").newIn ...

  3. java poi读取word中附件_java用poi实现对word读取和修改操作

    java编程要实现对word的操作没有vb那种编程语言来得容易,得借助一些开源组件,其中就包括jacob.poi等, 而poi应用得最为广泛,对word2003和2007的读和写word操作都十分方便 ...

  4. java用poi实现对word读取和修改操作

    java编程要实现对word的操作没有vb那种编程语言来得容易,得借助一些开源组件,其中就包括jacob.poi等, 而poi应用得最为广泛,对word2003和2007的读和写word操作都十分方便 ...

  5. Qt实战案例(28)——利用QSQL相关类实现对MySQL数据库的基本操作及相关设置详解

    目录 一.项目介绍 二.项目基本配置 2.1 安装MySQL 2.2 创建Qt项目 2.3 移动libmysql.dll文件 三.UI界面设计 四.主程序实现 4.1 pro文件 4.2 main.c ...

  6. Go web 开发数据库管理平台,利用远程过程调用(RPC)实现对MySQL数据库的管理和使用

    Go web 开发数据库管理平台,利用远程过程调用(RPC)实现对MySQL数据库的管理和使用 前言 做DBA,最基本的工作就是需要管理公司的数据库系统.工作中,常常需要维护的数据库数量是非常多的.小 ...

  7. java字符串字典排序_java实现对map的字典序排序操作示例

    本文实例讲述了java实现对map的字典序排序操作.分享给大家供大家参考,具体如下: java中对map的字典序排序,算法验证比对微信官网https://mp.weixin.qq.com/wiki?t ...

  8. java8 access_Java语言8 连接Access数据库UCanAccess的操作介绍

    本文主要向大家介绍了Java语言8 连接Access数据库UCanAccess的操作介绍,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. Java8 中JDK1.8中不再包含acces ...

  9. eas数据库 oracle,EAS数据库还原通用操作

    EAS数据库还原通用操作 --EAS数据库还原通用操作指导 --以下操作是建立在ORACLE程序已经安装好,ORACLE数据库已经创建好的条件上 --以下的命令符:#或$ 表示在小机系统上执行,同样的 ...

  10. python如何操作ppt_Python实现对PPT文件进行截图操作的方法

    本文实例讲述了Python实现对PPT文件进行截图操作的方法.分享给大家供大家参考.具体分析如下: 下面的代码可以为powerpoint文件ppt进行截图,可以指定要截取的幻灯片页面,需要本机安装了p ...

最新文章

  1. 解决springboot读取jar包中文件的问题
  2. %00截断攻击的探索
  3. bootstrap 空行不显示横杠_电脑开机有显示,但进不去系统
  4. LwIP 之五 详解动态内存管理 内存堆(mem.c/h)
  5. C++ Primer 7.33 练习编写成员函数
  6. The sentence of everyday use
  7. 实例26:python
  8. pla3d打印材料密度_3D打印金属材料模型过程中常见问题
  9. 施一公直播首秀来了!解答读博困惑,鼓励学生勇敢申请西湖大学
  10. xlrd合并单元格的读取的注意事项
  11. UE4物理模块(二)---建立物体碰撞
  12. 夯实基础开新局--全国乡镇党委换届工作进展顺利
  13. AVPlayer添加播放进度监听
  14. EDA发展历史及现状
  15. java beanshell_Java脚本-BeanShell
  16. 横向合计代码 锐浪报表_巧用锐浪报表:用报表脚本实现动态显示小数位数
  17. iPhone 如何将图片转换为文字
  18. 怎么发现愿景和目标 | 进击
  19. 沁春教你怎么在家制作拿铁咖啡!
  20. mysql idb 恢复_mysql靠idb文件恢复数据

热门文章

  1. CSS - Iconfont
  2. 最新友情链接交易平台源码,友链源码,友情链接,友链平台仿alivv爱链网源码下载
  3. MATLAB/Simulink搭建电动汽车整车七自由度模型
  4. 记:用notepad2替换系统自带记事本notepad
  5. 【读书笔记《Android游戏编程之从零开始》】2.Hello,World!
  6. SCADA数采HAAS数控系统现场实操步骤
  7. Excel图表之道—如何制作专业有效的商务图表(远离难看的图表,让客户满意,给自己加薪)...
  8. 微信开发者工具的最详细步骤如下:
  9. 同济大学 线性代数 第六版 pdf_线性代数同济大学第六版第一章课后习题答案
  10. 【详细】MySQL之游标