当前位置: 首页 > 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文件夹(没有就自己造一个)下…...

Matlab数据类型

本篇介绍我在南农matlab课程上的所学&#xff0c;我对老师ppt上的内容重新进行了整理并且给出代码案例。主要内容在矩阵。如果真的想学matlab&#xff0c;我不认为有任何文档能够超过官方文档&#xff0c;请移步至官网&#xff0c;本篇说实话只是写出来给自己和学弟学妹作期末复…...

webpack CDN打包优化

CDN网络分发服务 请求资源时最近的服务器将缓存内容交给用户 体积较大且变动不多的文件存在CDN文件中 react react-dom资源 // 添加自定义对于webpack的配置const path require(path) const { whenProd, getPlugin, pluginByName } require(craco/craco)module.exports {//…...

CTFHub-RCE 命令注入-过滤目录分隔符

观察源代码 代码里面可以发现过滤了目录分隔符\和/ 判断是Windows还是Linux 源代码中有 ping -c 4 说明是Linux 查看有哪些文件 127.0.0.1|ls 打开flag文件 发现存在一个flag_is_here的文件夹&#xff0c;我们需要打开这个文件夹找到目标文件我们尝试分步&#xff0c;先利…...

Flink 状态管理深度解析:类型与后端的全面探索

在流处理场景中,数据往往是连续且无界的,为了准确处理这些数据并维持计算的连续性,Flink 引入了状态管理机制。Flink 的状态管理包含状态类型和状态后端两大部分,它们相辅相成,共同为作业的可靠性、容错性和性能提供保障。接下来,我们将深入探究 Flink 状态管理中状态类型…...

【Java基础05】面向对象01

文章目录 1. 设计对象并使用1.1 类与对象1.2 封装1.2.1 private关键字1.2.2 this关键字成员变量和局部变量的区别 1.2.3 构造方法1.2.4 标准JavaBean类 1.3 对象内存图 本文部分参考这篇博客 1. 设计对象并使用 1.1 类与对象 public class 类名{1、成员变量(代表属性,一般是名…...

参加技术会议,为程序人生的职业生涯成长添砖加瓦

参加技术会议,为程序人生的职业生涯成长添砖加瓦 关键词:技术会议、程序员职业生涯、职业成长、技术交流、人脉拓展、知识体系升级、职业竞争力 摘要:在快速迭代的IT技术领域,参加技术会议已成为程序员突破职业瓶颈、构建核心竞争力的重要途径。本文从技术会议的核心价值出…...

设备制造行业项目管理难点解析,如何有效解决?

在设备制造行业&#xff0c;项目管理是企业运营的核心环节&#xff0c;直接影响项目交付效率、成本控制和盈利能力。然而&#xff0c;由于行业特性复杂、项目周期长、涉及部门多&#xff0c;企业在实际操作中常常面临诸多管理痛点。金众诚工程项目管理系统&#xff0c;依托金蝶…...

程序人生-hellohelloo

计算机系统 大作业 题 目 程序人生-Hello’s P2P 专 业 计算机与电子通信 学   号 2023111976 班   级 23L0504 学 生 孙恩旗     指 导 教 师 刘宏伟    计算机科…...

threejs渲染器和前端UI界面

1. three.js Canvas画布布局 学习本节课之前&#xff0c;可以先回顾下第一章节入门部分的6和12两小节关于threejs Canvas画布布局的讲解。 网页上局部特定尺寸&#xff1a;1.6 第一个3D案例—渲染器(opens new window) 全屏&#xff0c;随窗口变化:1.12 Canvas画布布局和全屏…...

使用k8s服务进行端口代理

创建registry-service.yaml 使用无Selector的Service Endpoints模式 vi registry-service.yaml编辑以下内容 apiVersion: v1 kind: Service metadata:name: registry-service spec:type: NodePortports:- name: httpprotocol: TCPport: 81 # Service内部端口targ…...