C#使用Access数据库使用总结

话说这Access数据库确实是有点年代了,前面在深圳的一家放射医疗公司,数据库用的Access,后面在我的建议下,换成了SQLite。用SQLite多舒服,不用装Runtime,还可以用EF。Access得装Runtime,也用不了EF。

回到长沙后,找了一家工业仪器的公司,发现也是用的Access数据库。

结果模糊查询 的时候,发现不对劲,这里总结几点C#在使用Access数据库时可能会遇到的问题

1、连接字符串

Access 2007 (文件后缀为.accdb)

没有密码的情况

Provider = Microsoft.Ace.OleDb.12.0;Data Source={0};Persist Security Info=False;

有密码的情况

Provider = Microsoft.Ace.OleDb.12.0;Data Source={0};Jet OleDb:DataBase Password='{1}';

说明:实际使用时,用string.Format()函数将{0}替换成数据库路径,{1}替换成密码即可

实际如下:

Provider = Microsoft.Ace.OleDb.12.0;Data Source=D:\test.accdb;Jet OleDb:DataBase Password='123';

Access 2003 (文件后缀为.mdb)

将Provider替换为Microsoft.Jet.OleDb.4.0即可,如下

Provider=Microsoft.Jet.OleDb.4.0;Data Source=D:\test.accdb;Jet OleDb:DataBase Password='123';
 

2、不使用OleDbParameter时,日期需要使用##包起来

有时候可能查询的语句比较简单,就不想使用参数的形式的,直接去拼SQL语句,如果判断的条件是日期,就要用##将日期包起来,不然会报错,如下

var sql = "Select * From Test Where  Date BETWEEN #2021/03/13# AND #2021/03/14#";

使用了参数,就可以不用带#。如下

 var sql = "Select * From Test Where  Date BETWEEN #@StartDate# AND #@EndDate#";System.Data.OleDb.OleDbParameter[] parameters = new System.Data.OleDb.OleDbParameter[]{new System.Data.OleDb.OleDbParameter("@StartDate","2021/03/13"),new System.Data.OleDb.OleDbParameter("@EndDate","2021/03/14")};

3、使用OleDbParameter时,日期需要传字符串

上面已经使用过参数了,这里需要注意的时,不能直接传DateTime类型,而是需要传入字符串,不然会报错。这次就是在公司遇到这个问题,调试了好久,因为太久没用Access,不记得了。

4、在Access里执行查询时,通配符使用* ,在C#中,使用%

例如在Access中直接执行模糊查询语句,查询包含z的姓名

Select * from Test Where Name Like '*z*';

在C#中需要将*替换成%,如下:

var sql = Select * from Test Where Name Like '%z%';

5、使用Where false可以查询表结构

var sql = "Select * from Test Where false";

这操作我以前还不知道,试了下SQL Server是不支持这操作的。 

6、查询语句包含单引号' 时,需要用两个单引号 ''

如:

Select * from xx where Des = 'what's'

要写成

Select * from xx where Des = 'what''s'

 7、判断表是否存在

调用OleDbConnectionGetOleDbSchemaTable函数,如下:

tableName就是要查询的表名

 OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=a.mdb");con.Open();var dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, tableName, "TABLE" });

GetOleDbSchemaTable会返回一个数据源架构信息的DataTable,再判断DataTable的行数是否大于0即可判断指定的表是否存在

 if(dt.Rows.Count > 0){Console.WriteLine("Exist")  }else{Console.WriteLine("Not exist")  }

通过这种方式也可以查询某个表是否存在某一列

tableName是要查询的表名,columnName是要查询的列名

 con.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, tableName, columnName });

到新公司也没写啥项目,目前就遇到这几个问题吧,做个总结。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/54086.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高德地图2.0 绘制、编辑多边形覆盖物(电子围栏)

1. 安装 npm i amap/amap-jsapi-loader --save移步&#xff1a;官方文档 2. map组件封装 <script lang"ts" setup> import AMapLoader from amap/amap-jsapi-loader import { onMounted, ref } from vue import { propTypes } from /utils/propTypesdefineO…

企业CAD图纸防泄密措施有哪些?10个真实有效方法分享

在工程设计领域&#xff0c;CAD图纸作为核心设计资料&#xff0c;其安全性至关重要。为了确保CAD图纸在存储、传输和使用过程中的机密性&#xff0c;企业需采取多种加密方法。以下介绍十种常用的CAD图纸加密方法&#xff0c;帮助企业有效保护其知识产权。 1.安秉网盾图纸加密 …

venn可视化

文章目录 前言一、数据准备二、可视化1.二维2.三维 3.数据保存总结 前言 韦恩图&#xff08;Venn diagram&#xff09;是一种用于可视化集合之间关系的图形工具。它是由英国逻辑学家约翰韦恩于1880年引入的。 韦恩图由一组圆和它们的交集区域组成。每个圆代表一个集合&#x…

Mac笔记本上查看/user/目录下的文件的几种方法

在Mac笔记本上查看/user/下的文件&#xff0c;可以通过多种方法实现。以下是一些常见的方法&#xff1a; 一、使用Finder 打开Finder&#xff1a;点击Dock栏中的Finder图标&#xff0c;或者使用快捷键Command F。 导航到用户目录&#xff1a; 在Finder的菜单栏中&#xff0…

简单了解微服务--黑马(在更)

认识微服务 单体架构 不适合大型复杂项目 微服务架构 将单体结构的各个功能模块拆分为多个独立的项目 拆取的独立项目分别开发&#xff0c;在部署的时候也要分别去编译打包&#xff0c;分别去部署&#xff0c;不同的模块部署在不同的服务器上&#xff0c;对外提供不同的功能…

2024ICPC网络赛1: C. Permutation Counting 4

题意&#xff1a; 给定 n n n个区间 [ L i , R i ] [L_i,R_i] [Li​,Ri​]设集合 A { { p i } ∣ p i 为排列&#xff0c; L i < p i < R i } A\{ \{ p_i\} | p_i为排列&#xff0c;Li<p_i<R_i\} A{{pi​}∣pi​为排列&#xff0c;Li<pi​<Ri​}&#xff…

MySQL底层为什么选择用B+树作为索引

首先&#xff0c;我们来想想为什么这么多数据结构&#xff0c;为什么要用树这种数据结构&#xff1f; 众多的数据结构在逻辑层面可分为&#xff1a;线性结构 和 非线性结构。 线性结构有&#xff1a;数组、链表&#xff0c;基于它们衍生出的有哈希表&#xff08;哈希表也称散…

[网络]从零开始的计算机网络基础知识讲解

一、本次教程的目的 本次教程我只会带大叫了解网络的基础知识&#xff0c;了解网络请求的基本原理&#xff0c;为后面文章中可能会用到网络知识做铺垫。本次我们只会接触到网络相关的应用层&#xff0c;并不涉及协议的具体实现和数据转发的规则。也就是说&#xff0c;这篇教程是…

Windows11:解决近期更新补丁后无法上网的问题

点击开始菜单&#xff0c;打开设置&#xff0c;点击Windows更新&#xff0c;点击更新历史记录&#xff0c;点击“卸载更新“&#xff0c;找到这个补丁更新卸载即可。

【Linux】网络层协议——IP

一、IP协议 在前面&#xff0c;我们学习了应用层和传输层&#xff0c;接下来&#xff0c;我们来学习网络层&#xff0c;网络层的主要功能是在复杂的网络环境中确定一个合适的路由。 1.1 IP协议的基本概念 主机&#xff1a;配有IP地址&#xff0c;有可以进行路由控制的设备路由…

香港电讯SASE解决方案:终端与云端的安全护航

现代工作模式存在网络安全隐忧 随着远程办公模式的普及&#xff0c;越来越多员工使用各种个人终端设备&#xff0c;如台式电脑、笔记本电脑、智能手机、平板电脑等进行协作办公。然而&#xff0c;由于IT人才短缺和员工隐私等因素&#xff0c;许多企业无法统一管理端点设备的安…

【自动驾驶】决策规划算法(一)决策规划仿真平台搭建 | Matlab + Prescan + Carsim 联合仿真基本操作

写在前面&#xff1a; &#x1f31f; 欢迎光临 清流君 的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落。&#x1f4dd; 个人主页&#xff1a;清流君_CSDN博客&#xff0c;期待与您一同探索 移动机器人 领域的无限可能。 &#x1f50d; 本文系 清流君 原创之作&…

开源免费的工贸一体行业ERP管理系统

引言 在当今数字化浪潮汹涌澎湃的时代&#xff0c;中小企业面临着前所未有的挑战与机遇。如何实现数字化转型发展&#xff0c;成为了众多中小企业主心头的大事。 据相关数据显示&#xff0c;目前我国中小企业数量已经超过了 4000 万户&#xff0c;然而成功实现数字化转型的比例…

『功能项目』按G键持续显示对话内容【61】

本章项目成果展示 我们打开上一篇60靠近Npc显示可对话标识的项目&#xff0c; 本章要做的事情是当靠近Npc按G键显示内容后&#xff0c;再按G键实现两个人的对话显示功能 首先将以下资源图片放进Art文件夹中并设置为精灵模式 在桌面上创建一个文本 讲一下对话内容复制到文本中 …

k8s(kubernetes)的PV / PVC / StorageClass(理论+实践)

NFS总是不支持PVC扩容 先来个一句话总结&#xff1a;PV、PVC是K8S用来做存储管理的资源对象&#xff0c;它们让存储资源的使用变得可控&#xff0c;从而保障系统的稳定性、可靠性。StorageClass则是为了减少人工的工作量而去自动化创建PV的组件。所有Pod使用存储只有一个原则&…

pgrouting实战应用

1&#xff09;下载地区地区数据&#xff08;下载数据是XYZM 四位数据&#xff09; 2&#xff09;下载裁剪行政区数据 3&#xff09;使用arcgis pro添加路网数据和行政区数据 4&#xff09;裁剪数据&#xff0c;仅历下行政区路网 5&#xff09;arcgis pro要素转线&#xff0…

GPT-4-Turbo 和 Claude-3.5-Sonnet 图片识别出答题的是否正确 进行比较

1、比较的图片&#xff1a; 使用GPT-4-Turbo 输入的 提问&#xff1a; 识别图片中的印刷字和手写字&#xff0c;如果写错的给一个正确答案 图片 回复&#xff1a; 在图片中&#xff0c;印刷字显示的是一系列的英语填空练习题&#xff0c;而手写字则是填入空白处的答案。以…

Eclipse折叠if、else、try catch的{}

下载插件com.cb.eclipse.folding_1.0.6.jar。将插件放到eclipse的dropins文件夹中。修改配置&#xff0c;然后保存&#xff0c;重启Eclipse即可。

openstack之cinder介绍

概念 cinder 为虚拟机提供管理块存储服务。支持的文件系统&#xff1a;lvm、iscsi、nfs、san、RBD 组件构成及功能介绍 cinder api&#xff1a;在控制节点运行&#xff0c;管理服务的接口&#xff0c;被命令行、其他组件调用&#xff1b; cinder scheduler&#xff1a;类似n…

Ruoyi Cloud K8s 部署

本文视频版本:https://www.bilibili.com/video/BV1xF4Se3Esv 参考 https://blog.csdn.net/Equent/article/details/137779505 https://blog.csdn.net/weixin_48711696/article/details/138117392 https://zhuanlan.zhihu.com/p/470647732 https://gitee.com/y_project/Ruo…