Access数据库C#读写验证

1、数据库简介

      Access数据库是一个相当古老的文件型数据库,主打一个简单+方便,没有复杂的安装过程,没有庞大的后端管理,整个数据库就是一个文件。可以像普通文件一样复制和修改,可以同时读写。

    在小型系统中,还是有较多的存量系统在使用Access数据库,相对简单的文件存储,还是有很大的进步。Access是关系型数据库,数据是结构化存储,数据的关系和格式,相对文件严谨很多。

2、数据库定义

     定义数据库表Measurement,定义几个字段。

2、写入代码片段

using System.Data.OleDb;OleDbConnection odcConnection=null;
string fileName = "D:\\Tools\\Pascal.mdb";
//*********连接本地ACCESS数据库************************
String sAccessConnection = @"Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " + fileName;
odcConnection = new OleDbConnection(sAccessConnection);
odcConnection.Open(); //打开连接Random ranValue = new Random();
int wdCount = 0;
int wdErrCount = 0;
private void WriteAccessData()
{int FieldCount = 0;Stopwatch sw = new Stopwatch();sw.Start();try{OleDbCommand odCommand = odcConnection.CreateCommand(); //建立SQL查询//3、输入查询语句string dtStr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");double f = ranValue.NextDouble()*1000;string sqlCmd = $"INSERT INTO Measurement (站点名称,日期时间,Data_1,Data_2,Data_3,Data_4,Data_5) VALUES ('站点1','{dtStr}','{f}','{f}','{f}','{f}','{f}')";odCommand.CommandText = sqlCmd;odCommand.ExecuteNonQuery();  //建立读取//*********连接本地ACCESS数据库************************Console.WriteLine($"Write Count:{++wdCount},FieldCount:{FieldCount},Elapsed(s):{sw.Elapsed.TotalSeconds}");}catch (Exception ex){wdErrCount++;Console.WriteLine($"write err:{ex.Message}");}
}

通过定时写入观察,在数据量持续增加,数据文件到达100MB+后,数据的写入性能没有明显变化。

3、数据读取

OleDbConnection odcConnection = null;
private void GetAccessData()
{string rcStatus = "";int FieldCount = 0;Stopwatch sw = new Stopwatch();sw.Start();try{readCount++;//*********连接本地ACCESS数据库************************String sAccessConnection = @"Provider = Microsoft.Jet.OLEDB.4.0; Data Source = "+ fileName;if (odcConnection==null){odcConnection = new OleDbConnection(sAccessConnection);odcConnection.Open(); //2、打开连接}{string sqlCmd = "SELECT TOP 1 * FROM Measurement ORDER BY 日期时间 DESC";//查询数据,仅读取第一条记录using (OleDbCommand odCommand = odcConnection.CreateCommand()){odCommand.CommandText = sqlCmd;infoRunMsg = sqlCmd;using (DbDataReader odrReader = odCommand.ExecuteReader()){while (odrReader.Read()) //查询并显示数据{FieldCount = odrReader.FieldCount;for (int i = 0; i < odrReader.FieldCount; i++){var f = odrReader.GetName(i);var v = odrReader.GetValue(i);//Console.WriteLine($"{f}:{v}");}break;}}}}//*********连接本地ACCESS数据库************************rcStatus = "Ok";Console.WriteLine($"Read Count:{readCount},Err:{readErrCount},FieldCount:{FieldCount},Elapsed(s):{sw.Elapsed.TotalSeconds}");}catch (Exception ex){odcConnection?.Close();odcConnection = null;readErrCount++;rcStatus = ex.Message;Console.WriteLine("Read Err:"+ex.Message);}
}

   读取数据时,随着数据量的增加,性能有明显的下降,这点与其他数据库有点类似。

4、读取数据的优化

      读取数据的优化方面,Access和普通的数据库有点类似,可以尝试常规的方法来改进读取性能。

4.1 加上时间过滤条件优化        

        我们数据定义中有时间参数,加入时间过滤条件筛选SQL不需要的数据时,可以明显改善性能。比如将上面的SQL改为:

“SELECT TOP 1 * FROM Measurement where 日期时间>\"2024-01-01 12:00:00\" ORDER BY 日期时间 DESC”,性能提升明显。

4.2 使用具体列名称替代"*"

      继续优化,使用具体列名称替代SELECT *,新的SQL如下:

"SELECT TOP 1 站点名称,日期时间,Data_1,Data_2,Data_3,Data_4,Data_5 FROM Measurement where 日期时间>\"2024-01-01 12:00:00\" ORDER BY 日期时间 DESC",也有比较明显的改善。

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

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

相关文章

Xgboost分类模型的完整示例

往期精彩推荐 数据科学知识库机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归PySpark大数据处理详细教程 定义问题 UCI的蘑菇数据集的主要目的是为了分类任务&#xff0c;特别是区分蘑菇是可食用还是有毒。这个数据集包含了蘑菇的各种特征&#xff0c;如…

系统学习Python——装饰器:函数装饰器-[装饰器状态保持方案:外层作用域和非局部变量]

分类目录&#xff1a;《系统学习Python》总目录 我们在某些情况下可能想要共享全局状态。如果我们真的想要每个函数都有自己的计数器&#xff0c;要么像前面的文章那样使用类&#xff0c;要么使用Python3.X中的闭包函数&#xff08;工厂函数&#xff09;和nonlocal语句。由于这…

听GPT 讲Rust源代码--library/alloc

File: rust/library/alloc/benches/slice.rs 在Rust源代码中&#xff0c;rust/library/alloc/benches/slice.rs文件的作用是对&[T]类型&#xff08;切片类型&#xff09;进行性能基准测试。该文件包含了对切片类型的一系列操作的基准测试&#xff0c;例如切片迭代、切片排序…

0101包冲突导致安装docker失败-docker-云原生

文章目录 1 前言2 报错3 解决结语 1 前言 最近在学习k8s&#xff0c;前置条件就是要安装指定版本的docker&#xff0c;命令如下 yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io-1.4.62 报错 file /usr/libexec/docker/cli-plugins/docker-buildx fr…

用 print 太慢了!强烈推荐这款Python Debug工具~

作为程序员&#xff0c;我们都深知调试&#xff08;Debug&#xff09;在编程过程中的重要性。 然而&#xff0c;使用传统的"print"语句进行调试可能效率较低&#xff0c;今天&#xff0c;笔者将推荐一款独具一格的Python调试工具——Reloadium。 Reloadium为IDE添加…

sparkstreamnig实时处理入门

1.2 SparkStreaming实时处理入门 1.2.1 工程创建 导入maven依赖 <dependency><groupId>org.apache.spark</groupId><artifactId>spark-streaming_2.12</artifactId><version>3.1.2</version> </dependency> <dependency…

C++初阶——基础知识(内联函数)

目录 1.内联函数 内联函数的示例代码 1.内联函数 是一种 C 中的函数定义方式&#xff0c;它告诉编译器在每个调用点上插入函数体的副本&#xff0c;而不是像普通函数那样在调用时跳转到函数体所在的地址执行。这样可以减少函数调用的开销&#xff0c;提高程序的执行效率。 …

从入门到精通,30天带你学会C++【第十天:猜数游戏】

目录 Everyday English 前言 实战1——猜数游戏 综合指标 游玩方法 代码实现 最终代码 试玩时间 必胜策略 具体演示 结尾 Everyday English All good things come to those who wait. 时间不负有心人 前言 今天是2024年的第一天&#xff0c;新一年&#xff0c;新…

计算机毕业设计——springboot养老院管理系统 养老院后台管理

1&#xff0c;绪论 1.1 背景调研 养老院是集医疗、护理、康复、膳食、社工等服务服务于一体的综合行养老院&#xff0c;经过我们前期的调查&#xff0c;院方大部分工作采用手工操作方式,会带来工作效率过低&#xff0c;运营成本过大的问题。 院方可用合理的较少投入取得更好…

声明式导航传参详情

1 动态路由传参 路由规则path ->/article/:aid 导航链接 <router-link to"/article/1">查看第一篇文章</router-link> 组件获取参数: this.$route.params.aid 如果想要所有的值&#xff0c;就用this. $route. params 注意&#xff1a;这两个必须匹配…

Spring Cloud Function SpEL注入漏洞(CVE-2022-22963)分析

一、概述 2022年3月24日&#xff0c;Pivotal修补了Spring Cloud Function中一个关键的服务器端代码注入漏洞&#xff08;Spring表达式语言注入&#xff09;&#xff0c;该漏洞有可能导致系统被攻击。Spring是一种流行的开源Java框架&#xff0c;该漏洞与另一个相关的远程代码执…

Dirichlet Process (徐亦达老师)狄利克雷过程

混合高斯模型的例子 混合高斯模型 混合高斯模型&#xff08;Mixture of Gaussians&#xff0c;简称GMM&#xff09;是一种概率模型&#xff0c;用于对复杂的数据分布进行建模。它是由多个高斯分布组合而成的混合模型&#xff0c;每个高斯分布&#xff08;称为组件&#xff09;…

知识库问答LangChain+LLM的二次开发:商用时的典型问题及其改进方案

前言 如之前的文章所述&#xff0c;我司下半年成立大模型项目团队之后&#xff0c;我虽兼管整个项目团队&#xff0c;但为让项目的推进效率更高&#xff0c;故分成了三大项目组 第一项目组由霍哥带头负责类似AIGC模特生成系统第二项目组由阿荀带头负责论文审稿GPT以及AI agen…

pytorch深度学习笔记(共计169页,基于本人听完B站小土堆PyTorch深度学习快速入门教程所写)

一、笔记视频 pytorch深度学习&#xff08;共计169页&#xff0c;基于本人听完B站小土堆PyTorch深度学习快速入门教程所写&#xff09; 二、获取方式 方式一&#xff1a; 点击下面的链接 pytorch深度学习笔记 如果链接无法打开 直接复制下方链接即可 https://mall.bilibili.c…

如何借助边缘网关打造智慧配电房安全方案

配电房是电力系统的重要组成部分&#xff0c;通常设置有各种高压配电装置和箱柜&#xff0c;是企业安全管理的重点。传统的人工巡检和监控总是难以避免疏漏&#xff0c;导致风险隐患的产生和扩大。 随着物联网、边缘计算、设备联动控制等技术的普及应用&#xff0c;佰马针对配电…

在FC中手工创建虚拟机模板

1、Linux去除个性化信息 &#xff08;1&#xff09;编辑网卡配置文件&#xff0c;只保留以下内容&#xff08;以RHEL 7为例&#xff09; &#xff08;2&#xff09;清除主机密钥信息&#xff08;开机会自动生成&#xff09; &#xff08;3&#xff09;清除Machine ID&#xff…

机器学习概述

最近在学习机器学习的基础知识&#xff0c;在此记录一下 目前最火的机器学习框架是Scikit-Learn和pytorch&#xff0c;因此&#xff0c;之后的一段时间会使用这两种框架搭建机器学习的模型&#xff0c;相应的学习资源也会开源&#xff0c;希望可以学习到很多知识。 简单介绍机…

Servlet见解3

13 Cookie和Session http协议是一个无状态的协议&#xff0c;你每一个跳转到下一个页面的时候都是需要先登录才能使用&#xff0c;这样就很麻烦比如淘宝&#xff0c;没有cookie和session的话&#xff0c;用户在首页已经登录上去了&#xff0c;但是需要再次登录才能选择商品&am…

使用pyqt5+qtdesign设计模仿网易云音乐客户端界面

案例效果图 设计界面效果图&#xff1a; 运行效果图&#xff1a; 本项目目前只是对界面进行了设计&#xff0c;功能都没有进行完善&#xff0c;想完善的小伙伴自己拿到UI文件之后&#xff0c;自己完善即可。 简要设计思路说明 使用QFrame将界面分割布局成如下几个部分&am…

buuctf-Misc 题目解答分解103-105

103.[GKCTF 2021]签到 追踪流发现类似flag 字符 f14g 下面有大量的是16进制字符 64306c455357644251306c6e51554e4a5a3046355355737764306c7154586c4a616b31355357704e65556c7154586c4a616b31355357704e65556c7154586c4a616b31355357704e65556c7154586c4a616b31355357704e655…