向ACCESS大批量快速插入数据的方法

c#向Access数据库中批量插入大量记录的方法 最近心情比较low,年纪大了,接触的开发工作越来越少,脑袋反应越来越慢,所以,开博客纪念吧 【背景】 最近有同事离职,我把他经手的项目接了过来,其中有一个功能,经过长时间运算以后,产生了17W条左右的记录,一次性保存到数据库中,每次界面要卡顿1分钟多,很是闹心,决定修改一下 【基本情况】 c#、nhibernate、Access数据库 【解决思路】 1、据说第一版本的实现,采用 阅读详情
 

今天经过试验,总结了一条向ACCESS大批量插入数据时比较快捷的方法.

先前VC程序中使用connection执行insert语句向ACCESS中插入数据,效率奇慢无比.今天测试结果表明:

同等数据量时,  rs.addnew比connection.execute(insert)要高N倍.

另,建议使用事务机制处理数据.
将connection.BeginTrans和connection.CommitTrans配合rs.addnew使用,
VB+ACCESS试验数据表明,一百万条新数据插入,仅需要一分多钟,使用connection.execute更新十万条数据时需要三五分钟.不使用事务应该会更久(根据先前经验,未测试).
需要注意的是,使用rs.addnew时,rs的LockType不能使用adLockBatchOptimistic或adLockReadOnly,否则会报错

=========================================================
测试代码如下:

  1. Private Sub Command1_Click()
  2. Dim cnn1 As ADODB.Connection
  3.    Dim rstTitles As ADODB.Recordset
  4.    Dim strCnn As String
  5.    Dim strTitle As String
  6.    Dim strMessage As String
  7.    ' 打开连接。
  8.    strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/Documents and Settings/桌面/新建 Microsoft Office Access 应用程序.mdb;Persist Security Info=False"
  9.    Set cnn1 = New ADODB.Connection
  10.    cnn1.Open strCnn
  11.    
  12.    Dim i As Long
  13.    Dim t1 As String, t2 As String
  14.    t1 = Time$()
  15.    cnn1.BeginTrans
  16.    
  17.    Set rstTitles = New ADODB.Recordset
  18.    rstTitles.LockType = adLockPessimistic '不能使用adLockBatchOptimistic或adLockReadOnly
  19.    rstTitles.CursorType = adOpenDynamic
  20.     rstTitles.Open "tab", cnn1
  21.     
  22.    For i = 1 To 10
  23.     rstTitles.AddNew
  24.     rstTitles("a") = i
  25.     rstTitles("b") = i
  26.     rstTitles.Update
  27.    Next i
  28.     cnn1.CommitTrans
  29.     
  30.    rstTitles.Close
  31.    cnn1.Close
  32.    
  33.    t2 = Time$()
  34.    
  35.    MsgBox t1 & "   " & t2
  36. End Sub
Access数据库数据插入操作详解与实例 在探索Microsoft Access的奥秘之前,让我们首先了解其核心组件,以便更好地把握后续章节的内容。Access数据库由多个独立但相互关联的对象组成,其中最为关键的三个部分是:表、查询和表单。表是存储数据的容器,它由列(字段)和行(记录)构成,我们将在第二章深入探讨。查询是检索和操作数据的强大工具,用于从表中提取信息、执行更新或插入操作等,具体细节将在后续章节展开。表单则提供了用户与数据交互的界面,让数据的查看和编辑变得更加直观便捷。 阅读详情

相关推荐

C#与Access数据库的快速入门指南

C#(读作“C Sharp”)是由微软开发的一种强类型、面向对象的编程语言。作为.NET框架的一部分,它被设计为简单、现代、通用的编程语言。C# 的设计哲学深受 Java、C++ 和 Delphi 的影响,它支持多种编程范式,包括面向对象、命令式、函数式、泛型和组件编程。Microsoft Access是一款流行的桌面数据库管理系统,它被广泛应用于企业、教育机构和个人开发中。与其它数据库系统相比,Access具有几个显著特点和优势:易用性。

weixin_42576410的博客 797

ACCESS批量插入记录终极方法

一、使用TADOCommand

lcfeng1982的专栏 1万+

ACCESS数据库读取工具:快速操作与管理

Microsoft Access是微软推出的一个关联数据库管理系统,它最初于1992年随Office专业版一起发布,是较早集成在办公软件套件中的数据库产品。随着时间的推移,Access不断更新改进,成为众多小型企业和个人开发者用来存储和管理数据的应用程序之一。

weixin_35516624的博客 1271

技术图文:如何利用 C# 向 Access 数据库插入大量数据?

背景 通常我们在做数据分析与处理之前,需要把从网站爬取的数据或者从 甲方 系统中导出的数据存入到自己的数据库中。如果数据量小,直接利用 SQL的 Insert 语句逐条插入就好。可是数据量上万条之后,再利用这样的方法就会奇慢无比,让人无法忍受。 最近在优化 台区线损排查分析软件 时遇到从集中器采集的上万条语句的入库,以及 继电保护可靠性评估与检修决策软件 中导入几万条 变电站一次设备的保护告警数据...

老马的程序人生 6347

ACCESS和SQL批量插入数据工具

向ACCESS和SQL中批量插入数据的工具,进行负荷测试时,比较适用!

C# Access 大数据量 批量 效率 快速 导入

C#写的大数据量批量快速效率高校的导入。 反正不是一条一条的插入 是一个dataset一个的插入 不管是C#还是JAVA 都用的上

【整理】关于Access批量插入数据

  由于最近的一个项目使用的是Access数据库,而且需要使用插入大量数据。在插入大量数据时,如果采用循环,一条一条执行,效率会非常低。因此基于MS Sql数据库使用经验,想拼接insert语句。 语句格式: insert into 表名 列名1,列名2 select 值1,值2 union select 值1,值2 写了老半天,发现怎么都执行不成功。我怀疑代码有问题,所以直接在...

weixin_34419326的博客 1465

POWER(十一)charge pump原理

电荷泵是一种基于电容充放电原理的DC-DC转换电路,通过开关控制实现电压转换,包括升压、降压和负压输出。其核心是利用电荷守恒原理,通过电容存储和转移电荷来改变输出电压。典型拓扑结构包括倍压电路和多阶升压电路,具有结构简单、体积小等优势。关键参数包括转换效率、输出电流能力和开关频率,适用于芯片供电、显示屏驱动等低功耗场景。LVDS部分补充说明了自举电路在驱动电路中的应用及其自同步特性。

zhlwsh的博客 2795

如何解决程序中新插入ACCESS数据库表的记录无法及时在数据库中更新的问题。

可以通过事务来解决这个问题。 只需在执行数据插入的语句前加上 m_pConnection->BeginTrans(); 在执行数据插入的语句后加上 m_pConnection->CommitTrans();

Anliya的专栏 1328

Unity中基于SkinMeshRenderer的骨骼动画换装系统优化实践

本文深入探讨了Unity中基于SkinnedMeshRenderer的骨骼动画换装系统优化实践。针对换装卡顿、显示错误等常见问题,文章剖析了SkinnedMeshRenderer的核心数据原理,对比了“数据替换”与“实体替换”两种主流方案的性能差异,并详细阐述了通过骨骼字典缓存、对象池管理、材质合并与Draw Call优化等实战技巧,构建高性能、高稳定性的生产级换装系统。

weixin_29008055的博客 314

MATLAB图像去噪实战:如何用巴特沃斯滤波器完美去除横条纹(附完整代码)

本文详细介绍了如何使用MATLAB中的巴特沃斯滤波器有效去除图像中的横条纹噪声。通过频域分析和滤波处理,结合完整的代码示例,帮助读者掌握从噪声分析到参数优化的全流程技术,实现高质量的图像去噪效果。

weixin_30566063的博客 562

ACCESS 一次性插入多条数据

在ACCESS的查询中,通常一次只能插入一条记录,如果同时有多条记录要追加,就要写多个查询,这有点麻烦。能不能在一个查询中实现多条记录的追加呢?经多方查找与测试,发现可以用以下方法实现,现分享给大家。 Insert INTO students Select DISTINCTROW * FROM (Select 1 AS ID,"张三" AS XM,"男" AS XB,"12" AS BJ

杨千羽的学习历程 1万+

最新,弱小目标检测数据集,持续更新中。

梳理了最新的下弱小目标检测数据库,方便后续开发使用

weixin_43331421的博客 4092

VC++对Access数据库的操作(查询、插入、更新、删除等)

Microsoft Office Access是由微软发布的关系数据库管理系统。Access数据库常应用于小型软件系统中,比如:生产管理、销售管理、库存管理等各类企业管理软件,其最大的优点是:简单易学、使用灵活。 下面我们结合实例来详细说明,在VC++ MFC中,如何使用Access数据库文件进行数据的存储,如何实现对数据库中数据的查询、插入、更新和删除等操作。 (实例可在我的优快云资源中下

小木头工作室 2万+

华为数字化转型之道 方法篇 第五章 视IT为投资,用产品思维管理IT

比较传统信息化和数字化转型下的IT系统特征,我们发现业务环境、IT能力、业务和IT的关系都发生了巨大的变化(见图5-1)从“管理系统”到“作业平台”。企业通常的做法是将线下的文档、流程线上化,IT系统是作为管理系统而存在的。而面向数字化,企业的业务作业、业务运营和决策、团队协同等业务动作已经和IT系统集成,IT系统逐步转变为作业系统。从“功能优先”到“体验优先”,如果要整体完成一项工作往往需要用户在不同系统间切换,费时费力。

沧海之巅的专栏 1092

ROS2 - 乐动激光雷达 LD06

STL-06P 主要由激光测距核心,无线传电单元,无线通讯单元,角度测量单元、电机驱动单元和机械外壳组成。STL-06P 测距核心采用 DTOF 技术,可进行每秒 5000 次的测距。每次测距时,雷达发射出红外激光,激光遇到目标物体后被反射到单光子接收单元。

机器人控制与仿真应用 3482

用sqlbulkcopy快速插入大批量数据

using System; using System.Diagnostics; using System.Data; using System.Data.SqlClient; using Microsoft.ApplicationBlocks.Data; using System.Text; namespace ConsoleAppInsertTest { class Program { stat...

weixin_45504213的博客 221

Altium Designer(AD)仿真实验操作指南

1:运行仿真2:设置仿真3:放置电源模块4:放置器件模块5:探针。

XU157303764的博客 8888

C#批量插入access数据库

C#造福大家 不管什么数据,只要沾上大数据,效率,快速,批量 都是一件很让人头疼的事情。 尤其是遇到了Access这种数据库。 这个没有什么好的办法,只好一条一条的写SQL插入了。 在这提供2种思路。第一种是写事物去处理。这点大家都懂的。第二种是用批量更新。 很奇怪这2种方法的处理速度都差不多。都比一条一条的插入块。那看你高兴了。 如果你有更快的方法,请不要忘记了我 lqqlike@1...

kucoffee12的博客 4123

利用RFIDIOt和NFC进行Hitag2密码暴力破解: Python代码实现

RFID即无线射频识别,是一种通信技术,可以通过无线电信号读取、捕获和保存终端上的信息。这项技术在物流、零售、医疗等领域有着广泛的应用。NFC即近场通信,是一种短距离的高频无线通信技术,允许电子设备之间进行非接触式点对点数据传输。Hitag2是一种常见的RFID标签,广泛应用于汽车防盗系统、门禁系统等。由于其安全性在过去被广泛认可,很多设备都采用了这种标签。但近年来随着密码破解技术的发展,Hitag2的安全性受到了一些挑战。

qq_38334677的博客 1560

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

C#把DataTable中数据一次插入数据库的方法

客户有一台打卡机,员工打卡的信息全部储存在打卡机的Access数据库里面,现在客户引入了一种新的管理系统,需要将Access数据库中的打卡数据同步到SQL Server数据库中,由于时间比较久,数据积累了有40多万条。选择Access数据库文件,填入目标SQL Server数据库的IP地址,然后开始进行同步。封装读取Access数据库数据到DataTable中的方法。

【微软MVP】zhaotianff的专栏 1200

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

word数据源mysql,Word2013中使用Access数据库的方法

Word 2013允许将Access数据库中的表和查询添加到Word文档中,下面介绍Word2013中使用Access数据库的具体操作方法。1、启动Word 2013,打开需要添加Access数据库的文档。单击“文件”标签,在窗口左侧的列表中选择“选项”选项打开“Word选项”对话框,再选择“快速访问工具栏”选项;在右侧的“从下列位置选择命令”下拉列表中选择“不在功能区中的命令”选项,在下方的列表...

weixin_42356292的博客 1609

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

C大数据批量插入Access程序:助你高效处理大数据

C#大数据批量插入Access程序:助你高效处理大数据 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在当前信息时代,数据处理已成为许多开发者和企业面临的挑战之一。对于需要将大量数据导入Access数据库的开发者来说,一个稳定且高效的数据批量插入工具显得尤为重要。C#大数据批量插入Access程序正是为了解决这一问题而诞生,它基于C#语言开发,旨在实现高效的大数据量批...

gitblog_06790的博客 1125

C#如何快速往Excel中插入数据

1.引用COM组件access10   Access.ApplicationClass  oAccess  =  new  Access.ApplicationClass();  oAccess.Visible  =  false;  //ACCESS10:  oAccess.OpenCurrentDatabase("d://test.mdb",false,"");  //导入access  oA

软件开发 4004

C# 连接ACCESS数据库 - 增删改查(详细步骤)

基于上一篇博客C# 连接MySQL实现增删改查(详细步骤),现在记录下另一篇博客,如何连接ACCESS数据库实现增删改查。 总体上也不算很难,因为微软的Visual Studio 本就支持连接该数据库 ,不像MySQL数据库,还得下载插件安装才行! 创建ACCESS数据库 按照图片顺序创建一个简单的数据库吧! 一、在自己的windows哪里找到该数据库,并双击打开 二、修改一下数据库的保存路径,并创建空白数据库 三、在创建的表格中添加字段,并添加一些数据,最后ctrl + s保存一下,并修改该表名为st

cpp_learner的博客 1万+
上一篇: vector查找对象或指针成员值的方法
下一篇: MapX中高效查询方法
jarraytan
博客等级 码龄22年 101粉丝 56原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值