当前位置: 首页 > news >正文

ACCESS数据库增删改查

 [添加COM组件]

 A: Microsoft ADO Ext. 2.8 for DDL and Security
B: Microsoft ActiveX Data Objects 2.8 Library

[添加头文件]
using System.Data.OleDb;
using System.Data;
using ADOX;
using System.IO;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.OleDb;
using System.Data;
using ADOX;
using System.IO;
using System.Xml.Linq;
using System.Diagnostics;namespace CsLibAccess
{public class AccessHelper{private static OleDbConnection accessConnection; //Access数据库连接private static OleDbCommand m_ole_Command = null;private DataTable m_datatable = new DataTable();/// 构造函数public AccessHelper(){}/// <summary>/// 创建数据库/// </summary>/// <param name="fileDBPath">数据库路径</param>/// <param name="openpwd">数据库密码</param>/// <returns></returns>public bool CreateAccessDb(string fileDBPath, string openpwd)//创建数据库{ADOX.Catalog catalog = new Catalog();if (!File.Exists(fileDBPath)){try{catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileDBPath + ";Jet OLEDB:Database password=" + openpwd);}catch (System.Exception e){Trace.TraceWarning("创建Access数据库出错,测试数据不能保存");return false;}}return true;}/// <summary>/// 创建数据库表格/// </summary>/// <param name="fileDBPath">数据库路径</param>/// <param name="openpwd">数据库密码</param>/// <param name="tableName">数据库表格名称</param>/// <param name="columsKey">表格字段</param>/// <returns>成功返回1</returns>public bool CreateAccessTable(string fileDBPath, string openpwd, string tbName, List<string> columsKey)//创建表{ADOX.Catalog catalog = new Catalog();//数据库文件不存在则创建if (!File.Exists(fileDBPath)){try{catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileDBPath + ";Jet OLEDB:Database password=" + openpwd);}catch (System.Exception e){Trace.TraceWarning("创建Access表出错", e);return false;}}ADODB.Connection cn = new ADODB.Connection();try{cn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileDBPath + ";Jet OLEDB:Database password=" + openpwd, null, null, -1);}catch (System.Exception ex){Trace.TraceWarning("Access连接打开失败", ex);return false;}catalog.ActiveConnection = cn;accessConnection = new OleDbConnection(cn.ConnectionString);try{accessConnection.Open();var exists = accessConnection.GetSchema("Tables", new string[4] { null, null, tbName, "TABLE" }).Rows.Count > 0;if (exists){Trace.TraceWarning("表格已存在...", tbName);accessConnection.Close();cn.Close();return false;}}catch (System.Exception ex){Trace.TraceWarning("Access连接打开失败", ex);return false;}ADOX.Table table = new ADOX.Table();table.ParentCatalog = catalog;table.Name = tbName;foreach (var column in columsKey){ADOX.ColumnClass col = new ADOX.ColumnClass();col.ParentCatalog = catalog;col.Name = column;col.Attributes = ColumnAttributesEnum.adColNullable; //允许空值table.Columns.Append(col, DataTypeEnum.adVarWChar, 50); //默认数据类型和字段大小}catalog.Tables.Append(table);cn.Close();return true;}/// <summary>/// 通过字典方式追加数据/// </summary>/// <param name="fileDBPath">数据库路径</param>/// <param name="openpwd">数据库密码</param>/// <param name="tableName">数据库表格名称</param>/// <param name="data"></param>/// <returns></returns>public bool AppendData2Access(string fileDBPath, string openpwd, string tableName, Dictionary<string, object> data){ADOX.Catalog catalog = new Catalog();//数据库文件不存在则创建if (!File.Exists(fileDBPath)){try{catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileDBPath + ";Jet OLEDB:Database password=" + openpwd);}catch (System.Exception e){Trace.TraceWarning("创建Access库出错", e);return false;}}ADODB.Connection cn = new ADODB.Connection();try{cn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileDBPath + ";Jet OLEDB:Database password=" + openpwd, null, null, -1);}catch (System.Exception ex){Trace.TraceWarning("Access连接打开失败", ex);return false;}catalog.ActiveConnection = cn;accessConnection = new OleDbConnection(cn.ConnectionString);try{accessConnection.Open();var exists = accessConnection.GetSchema("Tables", new string[4] { null, null, tableName, "TABLE" }).Rows.Count > 0;if (!exists){Trace.TraceWarning("表格不存在...", tableName);accessConnection.Close();cn.Close();return false;}}catch (System.Exception ex){Trace.TraceWarning("Access连接打开失败", ex);cn.Close();return false;}if (data.Count > 0){string fields = null;string values = null;string sql = null;foreach (var item in data){fields += item.Key.ToString() + ',';values += string.Format("'{0}'", item.Value.ToString()) + ',';}fields = fields.Remove(fields.Length - 1, 1);values = values.Remove(values.Length - 1, 1);sql = string.Format("insert into {0} ({1}) values ({2})", tableName, fields, values);OleDbCommand cmd = new OleDbCommand(sql, accessConnection);cmd.ExecuteNonQuery();accessConnection.Close();cn.Close();}return true;}/// <summary>/// 从数据库里面获取数据/// </summary>/// <param name="fileDBPath">数据库路径</param>/// <param name="openpwd">数据库密码</param>/// <param name="strSql">sql语句</param>/// <returns>返回DataTable 数据</returns>public DataTable GetDataTableFromDB(string fileDBPath, string openpwd, string strSql){ADOX.Catalog catalog = new Catalog();//数据库文件不存在则创建if (!File.Exists(fileDBPath)){try{catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileDBPath + ";Jet OLEDB:Database password=" + openpwd);}catch (System.Exception e){Trace.TraceWarning("创建Access库出错", e);return null;}}ADODB.Connection cn = new ADODB.Connection();try{cn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileDBPath + ";Jet OLEDB:Database password=" + openpwd, null, null, -1);}catch (System.Exception ex){Trace.TraceWarning("Access连接打开失败", ex);return null;}catalog.ActiveConnection = cn;accessConnection = new OleDbConnection(cn.ConnectionString);try{accessConnection.Open(); //打开连接if (accessConnection.State == ConnectionState.Closed){return null;}OleDbDataAdapter da = new OleDbDataAdapter(strSql, accessConnection); //创建适配对象da.Fill(m_datatable); //用适配对象填充表对象accessConnection.Close();cn.Close();}catch (System.Exception e){Console.WriteLine(e.ToString());}finally{if (accessConnection.State != ConnectionState.Closed){accessConnection.Close();}}return m_datatable;}/// <summary>/// 执行sql语句 需在确定表格存在的情况下执行 /// </summary>/// <param name="fileDBPath">数据库路径</param>/// <param name="openpwd">数据库密码</param>/// <param name="strSql">sql语句</param>/// <returns>成功返回1 </returns>public int ExcuteSql(string fileDBPath, string openpwd, string strSql){int nResult = 0;ADOX.Catalog catalog = new Catalog();//数据库文件不存在则创建if (!File.Exists(fileDBPath)){try{catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileDBPath + ";Jet OLEDB:Database password=" + openpwd);}catch (System.Exception e){Trace.TraceWarning("创建Access库出错", e);return 0;}}ADODB.Connection cn = new ADODB.Connection();try{cn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileDBPath, null, null, -1);}catch (System.Exception ex){Trace.TraceWarning("Access连接打开失败", ex);return 0;}catalog.ActiveConnection = cn;accessConnection = new OleDbConnection(cn.ConnectionString);try{accessConnection.Open(); //打开数据库连接if (accessConnection.State == ConnectionState.Closed){accessConnection.Close();accessConnection.Dispose();cn.Close();return nResult;}m_ole_Command = new OleDbCommand(strSql, accessConnection);nResult = m_ole_Command.ExecuteNonQuery();}catch (System.Exception e){Console.WriteLine(e.ToString());accessConnection.Close();accessConnection.Dispose();cn.Close();return nResult;}finally{if (accessConnection.State != ConnectionState.Closed){accessConnection.Close();}}accessConnection.Close();accessConnection.Dispose();cn.Close();return nResult;}}
}

相关文章:

ACCESS数据库增删改查

[添加COM组件] A: Microsoft ADO Ext. 2.8 for DDL and Security B: Microsoft ActiveX Data Objects 2.8 Library [添加头文件]using System.Data.OleDb; using System.Data; using ADOX; using System.IO; using System; using System.Collections.Generic; using System.L…...

动捕系统mockup_optitrack替换为VRPN传递信息

motive&#xff1a;启动→载入已有→layout选择capture→view选择data streming→复选marker右键create刚体→rename刚体→修改local interface为本机ip→勾选vrpn ROS端&#xff1a;roslaunch vrpn_client_ros vrpn_efy.launch 记得修改server地址为motiveip地址 关掉motive…...

【服务平台】Rancher运行和管理Docker和Kubernetes,提供管理生产中的容器所需的整个软件堆栈

Rancher是一个开源软件平台&#xff0c;使组织能够在生产中运行和管理Docker和Kubernetes。使用Rancher&#xff0c;组织不再需要使用一套独特的开源技术从头开始构建容器服务平台。Rancher提供了管理生产中的容器所需的整个软件堆栈。  完整软件堆栈 Rancher是供采用容器的团…...

二叉树的完全性检验

给定一个二叉树的 root &#xff0c;确定它是否是一个 完全二叉树 。 在一个 完全二叉树 中&#xff0c;除了最后一个关卡外&#xff0c;所有关卡都是完全被填满的&#xff0c;并且最后一个关卡中的所有节点都是尽可能靠左的。它可以包含 1 到 2h 节点之间的最后一级 h 。 示…...

激活函数总结(六):ReLU系列激活函数补充(RReLU、CELU、ReLU6)

激活函数总结&#xff08;六&#xff09;&#xff1a;ReLU系列激活函数补充 1 引言2 激活函数2.1 RReLU激活函数2.2 CELU激活函数2.3 ReLU6 激活函数 3. 总结 1 引言 在前面的文章中已经介绍了介绍了一系列激活函数 (Sigmoid、Tanh、ReLU、Leaky ReLU、PReLU、Swish、ELU、SEL…...

tp5中的事务处理

使用事务首先要数据库支持事务&#xff1b; 如下MySQL数据库user表开启事务支持&#xff0c;即设计表->引擎设置为InnoDB->保存 事务处理 1. 数据库的表引擎需要是 InnoDB 才可以使用&#xff0c;如果不是调整即可&#xff1b; 2. 事务处理&#xff0c;需要执行多个 SQ…...

论文总结《Towards Evaluating the Robustness of Neural Networks(CW)》

原文链接 C&W 这篇论文更像是在讲一个优化问题&#xff0c;后面讲述如何针对生成对抗样本的不可解问题近似为一个可解的问题&#xff0c;很有启发。本文后面将总结论文各个部分的内容。 Motivation 文章提出了一个通用的设计生成对抗样本的方法&#xff0c;根据该论文提…...

2024重庆邮电大学软件工程809题库(带答案)

1&#xff0e;下列选项中&#xff0c;不属于质量管理的主要任务的是&#xff08; C &#xff09;。 A&#xff09;制定软件质量保证计划 B&#xff09;按照质量评价体系控制软件质量要素 C&#xff09;增加软件产品的功能 D&#xff09;对最终软件产品进行确认 2&#xff0e;下…...

三种目标检测方法(基于传统数字图像处理的识别方法、基于传统机器学习的识别方法和基于深度学习的识别方法)的区别

问题描述&#xff1a;图像检测分为了基于传统数字图像处理的识别方法、基于传统机器学习的识别方法和基于深度学习的识别方法&#xff0c;但是有时迷惑三者的区别是什么呢&#xff1f; 问题解答&#xff1a; 第一&#xff0c;基于传统数字图像处理的识别方法和其他两者的区分…...

制造业为什么要建设数字化供应链

数字化让越来越多的人走向了线上的世界&#xff0c;让那些拥有线上产品或提供线上服务的企业提供了更多流量。 但与此同时&#xff0c;传统制造业遭受了沉重的打击&#xff0c;考虑到防疫要求&#xff0c;很多工厂长期处于人手不足的状态&#xff0c;生产制造效率大幅降低&…...

webrtc Thread 和 TaskQueue 的 应用和思考

webrtc Thread 和 TaskQueue 的 应用和思考 Thread #include "rtc_base/thread.h"void FunctionToRunOnThread() {// Your threaded logic here.printf("Function running on the thread!\n"); }int main() {rtc::Thread* thread rtc::Thread::Create()…...

无涯教程-Perl - pos函数

描述 此函数用于查找最后匹配的子字符串的偏移量或位置。如果指定了SCALAR,它将返回该标量变量上最后一个匹配项的偏移量。 您还可以为此函数分配一个值(例如pos($foo) 20;),以更改下一个匹配操作的起点。 偏移是从第零位置开始的计数器。 语法 以下是此函数的简单语法- …...

【腾讯云 Cloud Studio 实战训练营】使用Cloud Studio构建Java、Python项目

文章目录 一、云IDE1、云IDE简介2、云IDE和云虚拟桌面区别 二、Cloud Studio 简介1、简介2、AI代码助手3、企业源代码安全 三、快速开始1、登录Cloud Studio2、新建工作空间3、代码空间 四、项目构建1、构建Java项目1.1 新建工作空间1.2 初始化项目1.3 初始化小案例1.4、测试Ja…...

Java的Class类:每一个类都对应着一个Class对象

Class类的基本概念 在Java中&#xff0c;每一个类都对应着一个Class对象&#xff0c;这个Class对象包含了类的相关信息&#xff0c;例如类的名称、继承关系、方法、字段、注解等信息。通过Class对象&#xff0c;可以获取类的各种信息并对其进行操作。 请细品这句话&#xff1…...

JavaScript预编译机制

变量预编译 任何变量&#xff0c;如果未经声明就赋值&#xff0c;此变量是属于 window 的属性&#xff0c;而且不会做变量提升&#xff0c;无论在哪个作用域内赋值。比如说直接写 console.log(a)肯定会报错&#xff0c;提示找不到 a。但如果直接写 a 100就不会报错&#xff0…...

【ARM 嵌入式 编译系列 4.1 -- GCC 编译属性 likely与unlikely 学习】

文章目录 GCC likely与unlikely 介绍linux 内核中的 likely/unlikely 上篇文章&#xff1a;ARM 嵌入式 编译系列 4 – GCC 编译属性 __read_mostly 介绍 下篇文章: ARM 嵌入式 编译系列 4.2 – GCC 链接规范 extern “C“ 介绍 GCC likely与unlikely 介绍 likely 和 unlikely …...

《算法竞赛·快冲300题》每日一题:“造电梯”

《算法竞赛快冲300题》将于2024年出版&#xff0c;是《算法竞赛》的辅助练习册。 所有题目放在自建的OJ New Online Judge。 用C/C、Java、Python三种语言给出代码&#xff0c;以中低档题为主&#xff0c;适合入门、进阶。 文章目录 题目描述题解C代码Java代码Python代码 “ 造…...

NSS [MoeCTF 2022]baby_file

NSS [MoeCTF 2022]baby_file 题目源码直接给了 使用data伪协议发现被ban了。 那就换一种伪协议php://filter&#xff0c;猜测flag在同目录下flag.php中或根目录下/flag中 php://filter/readconvert.base64-encode/resourceflag.php读取文件源码&#xff08;针对php文件需要ba…...

喜报!诚恒科技与赛时达科技达成BI金蝶云星空项目合作

随着全球数字化浪潮轰轰烈烈袭来&#xff0c;仅仅凭借手工处理的方式难以在庞大的数据海洋中精准获取信息、把握市场需求、了解目标用户&#xff0c;为企业创新提供强有力的支持。深圳赛时达科技有限公司&#xff08;简称赛时达科技&#xff09;希望通过数字化转型实现从手工处…...

Vscode python调试和运行环境设置

Vscode python调试和运行环境设置 文章目录 Vscode python调试和运行环境设置前言一、是否为每次运行python程序都要选择环境烦恼二、是否为python程序调试不能进标准/第三方库而烦恼 前言 一、是否为每次运行python程序都要选择环境烦恼 在.vscode文件夹(没有就自己造一个)下…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

vue3 daterange正则踩坑

<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...

API网关Kong的鉴权与限流:高并发场景下的核心实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中&#xff0c;API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关&#xff0c;Kong凭借其插件化架构…...