社区
数据库
帖子详情
ado+access插入记录的效率问题
bauhaus
2005-01-26 05:38:39
我插入3000条记录,感觉速度太慢了,简直无法忍受
有什么办法能提高插入的效率吗?
谢谢
...全文
186
18
打赏
收藏
ado+access插入记录的效率问题
我插入3000条记录,感觉速度太慢了,简直无法忍受 有什么办法能提高插入的效率吗? 谢谢
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jazy
2005-09-08
打赏
举报
回复
我觉得这种约束条件不清晰的表,一次又要插入上千条记录,不如这样处理:每次打开程序都把所有记录读出来放内存里,插入新记录先在内存里检查是否有重复应过滤掉的,内存操作很快啊,等整理好了再删除所有数据,一次批量插入(利用ado的updatebatch很快的)。
flyjzy5
2005-09-07
打赏
举报
回复
没办法定义主健?你把第一个字段置为自动编号不就行了
专注VB编程开发20年
2005-02-03
打赏
举报
回复
顶
bauhaus
2005-01-28
打赏
举报
回复
的确是那里降低了速度
但是我的表没办法定义主健
因为没有一个东西是唯一的
bauhaus
2005-01-27
打赏
举报
回复
我打错了
大概时间时2分左右
表含有5个字段
2个时间字段,其余的是整数
感觉速度还是很慢
部分代码如下:
CString strSql;
CString PyName;
CADORecordset * rs;
CString strTemp;
WORD wUserId;
if(0 == dwRecordCount) //如果没有纪录,不处理,避免不必要的刷新
return TRUE;
rs = theApp.GetRecordPointer();
strSql = "select * from openrecord";
rs->Open(strSql,CADORecordset::openQuery);
if(rs->GetRecordCount())
rs->MoveLast();
bProcessFinished = FALSE;
// _beginthreadex( NULL, 0, ActiveDisplay, NULL, 0, 0 );
for(DWORD i = 0 ; i <dwRecordCount ; ++i)
{
COleDateTime time(2000+BCD2DEC(pOpenRecord[i].year),
BCD2DEC(pOpenRecord[i].month),
BCD2DEC(pOpenRecord[i].day),
BCD2DEC(pOpenRecord[i].hour),
BCD2DEC(pOpenRecord[i].minute),
BCD2DEC(pOpenRecord[i].second));
if(COleDateTime::invalid == time.GetStatus())//如果开门纪录时间无效我没办法处理
continue;
// AfxMessageBox(time.Format("%Y-%m-%d %H:%M:%S"));
strTemp.Format("%s%d","Devicenum=",nDeviceAddress);
strSql = "select * from openrecord where "+strTemp+" and "+" opentime=#"+time.Format("%Y-%m-%d %H:%M:%S")+"#" ;
rs->Open(strSql,CADORecordset::openQuery);
if(rs->GetRecordCount() > 0) //已经存在的???
{
// continue;
}
PyName.Format("%s",pOpenRecord[i].username);
wUserId = ntohs(pOpenRecord[i].userID);
COleDateTime currenttime = COleDateTime::GetCurrentTime();
rs->AddNew();
rs->SetFieldValue("DeviceNum",nDeviceAddress);
rs->SetFieldValue("UserId",wUserId);
rs->SetFieldValue("PyName",PyName);
rs->SetFieldValue("time",time);
rs->SetFieldValue("AddTime",currenttime);
rs->Update();
oyljerry
2005-01-27
打赏
举报
回复
access中不能在程序中直接用存储过程
jayfunk
2005-01-27
打赏
举报
回复
能不能在access中用存储过程?影响速度的是太多I/O操作吧!没法的,只有等啦,因为你这个是写入硬盘
abc789
2005-01-27
打赏
举报
回复
用ADO2.7看看,应该是你的代码有问题。ACCESS数据库不能用存储过程的。
3000条不要怎么多时间的。
把你的代码贴出来看看
gdy119
2005-01-27
打赏
举报
回复
用存储过程,或者调用批处理(批插入)
bauhaus
2005-01-27
打赏
举报
回复
用了10分多钟
内容不是很大
就是一些简单的文本
llm06
2005-01-27
打赏
举报
回复
你能不能说的清楚一点,3000条记录,什么内容,花了多少时间?
估计你自己的代码由问题。
bauhaus
2005-01-27
打赏
举报
回复
谢谢
能够再详细一些吗?
llm06
2005-01-27
打赏
举报
回复
我觉得问题出在这里
strSql = "select * from openrecord where "+strTemp+" and "+" opentime=#"+time.Format("%Y-%m-%d %H:%M:%S")+"#" ;
rs->Open(strSql,CADORecordset::openQuery);
if(rs->GetRecordCount() > 0) //已经存在的???
{
// continue;
}
如果你的表记录很多,这里会很花时间的。
对于数据库,不应该使用这种方法来判断有效性。应该给表设置约束,然后通过try{}catch{}根据错误信息来处理。
stavck
2005-01-27
打赏
举报
回复
定义一个主键,这样插入时不用查询是否存在。
qingz
2005-01-27
打赏
举报
回复
请教一下:CADORecordset 是不是你自己写的一个类。
我也是刚开始看ADO, 看了一下你的代码,你好象是先执行一次 select语句查询一次,如果没有记录才执行插入操作,那你就要执行3000次查询,再加上3000次插入,不知是不是因为这样才慢呢?
oyljerry
2005-01-26
打赏
举报
回复
用存储过程
或分批插入
hxzb7215191
2005-01-26
打赏
举报
回复
怎么会要一下子写入这么多的记录呢?
kingzai
2005-01-26
打赏
举报
回复
1.用ADO中的存储过程.
2.在执行SQL之前,先Prepared = True;
ADO
+
ACCESS
数据库使用详解
ADO
(ActiveX Data Objects)是Microsoft提供的一种数据访问接口,用于与各种数据库系统进行交互,包括Microsoft
Access
。在本文中,我们将深入探讨如何利用
ADO
与
Access
数据库进行高效的数据操作。 一、
ADO
基础 1....
VC技巧与VC+
ADO
+
Access
数据库数据库大全
【VC技巧与VC+
ADO
+
Access
数据库大全】涵盖了VC++编程中的多个重要知识点,主要集中在MFC消息映射机制、
ADO
数据库操作以及VC中的实用技巧。以下是对这些知识点的详细说明: 1. **MFC消息映射机制**: - 消息映射是...
无线实时仓库管理系统 (
ADO
+
ACCESS
)
《无线实时仓库管理系统 (
ADO
+
ACCESS
):数据库应用与源代码解析》 无线实时仓库管理系统是一种先进的企业管理工具,尤其在物流、仓储行业中有着广泛的应用。该系统基于DELPHI编程语言开发,结合了
ADO
(ActiveX Data...
VB+
access
+电脑报价
【VB+
Access
电脑报价系统】是...总的来说,【VB+
access
+电脑报价】系统结合了VB的强大编程能力和
Access
的数据管理能力,为电脑销售行业提供了一种便捷的信息管理和交流平台,有利于提升工作
效率
,优化销售和服务流程。
超级经典的ASP+
ACCESS
动态网页的制作
4. **添加数据**:当用户提交表单后,ASP脚本可以使用
ADO
(ActiveX Data Objects)库来连接
ACCESS
数据库,并使用`Recordset`对象的`AddNew`方法将新
记录
插入
到表中。 5. **编辑数据**:ASP可以通过查询数据库找到...
数据库
4,017
社区成员
39,807
社区内容
发帖
与我相关
我的任务
数据库
VC/MFC 数据库
复制链接
扫一扫
分享
社区描述
VC/MFC 数据库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章