社区
数据库
帖子详情
ado+access插入记录的效率问题
bauhaus
2005-01-26 05:38:39
我插入3000条记录,感觉速度太慢了,简直无法忍受
有什么办法能提高插入的效率吗?
谢谢
...全文
168
18
打赏
收藏
ado+access插入记录的效率问题
我插入3000条记录,感觉速度太慢了,简直无法忍受 有什么办法能提高插入的效率吗? 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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;
Excel VBA实用技巧大全 附书源码
04156为单元格
插入
指向工作簿外部的超链接、删除超链接 04157为单元格添加批注、删除批注 04158修改单元格的批注 04159为单元格区域定义名称、删除名称(Name属性) 04160为单元格区域定义名称、删除名称(Add方法)...
PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1
实例022 在表格中
插入
宠物照片 38 实例023 Dreamweaver创建表单 40 实例024 Dreamweaver中创建和附加CSS样式 42 实例025 Dreamweaver控制弹出信息 45 实例026 Dreamweaver控制浏览器的窗口 46 实例027 通过...
VBA从入门到精通(控件+类模块+
ADO
+SQL数据库)
本课程属性Excel VBA中比较高阶的课程,主要讲解关于各种事件的应用,...第2章:窗体控件应用第3章:ActiveX控件应用第4章:类模块应用第5章:vba+
ado
+sql第6章:实战应用(考试系统开发)
PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2
实例022 在表格中
插入
宠物照片 38 实例023 Dreamweaver创建表单 40 实例024 Dreamweaver中创建和附加CSS样式 42 实例025 Dreamweaver控制弹出信息 45 实例026 Dreamweaver控制浏览器的窗口 46 实例027 通过...
十天学会ASP.net--我认为ASP.NET比ASP难很多,希望大家做好准备
所以我们有两种方法:如果是读取一条
记录
的数据或者不多的数据,我们用DATAREADER采集数据,然后赋值给LABEL控件的Text属性即可;如果是读取大量数据我们就采用DATAGRID。 今天我们就来说一下DATAREADER: string ...
数据库
4,011
社区成员
39,816
社区内容
发帖
与我相关
我的任务
数据库
VC/MFC 数据库
复制链接
扫一扫
分享
社区描述
VC/MFC 数据库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章