CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

添加数据速度问题?

楼主blitre(瘦死的老鼠比象大)2005-05-17 18:07:34 在 Delphi / 数据库相关 提问

我现在要一次向数据表中添加几千条记录,应该如何做速度才达到最快?不影响系统。请赐教! 问题点数:20、回复次数:14Top

1 楼78hgdong(赤脚)回复于 2005-05-17 21:44:52 得分 5

写存储过程来完成!用的是BDE还是ADO?Top

2 楼blitre(瘦死的老鼠比象大)回复于 2005-05-18 08:16:09 得分 0

TO   78hgdong(蜗牛跑步)    
   
   
  我用的是ADO啊,我想用ADOQuery实现添加啊。应该怎么做呢?Top

3 楼tgtcn(tgtcn)回复于 2005-05-18 08:16:14 得分 0

存储过程Top

4 楼blitre(瘦死的老鼠比象大)回复于 2005-05-18 08:54:02 得分 0

能不能用代码示例啊?假如我要添加这些字段:ID,   Name,Age     表名为:   StudentInfo     存储过程应该怎么写呢?又该如何调用呢?本人数据库方面很欠缺,对存储过程更是没怎么接触,请高手指教。Top

5 楼blitre(瘦死的老鼠比象大)回复于 2005-05-18 09:00:12 得分 0

我用的是ACCESS数据库,存储过程应该写在哪里呢?在DELPHI里用ADOQuery又如何去调用呢?Top

6 楼birdhaha(haha)回复于 2005-05-18 09:03:59 得分 5

用多线程吧,不过对于access数据库,不会提高多少速度。Top

7 楼jiomszhou(深蓝)回复于 2005-05-18 09:10:42 得分 0

请问怎么在CSDN中发问题啊,我注册了但是找不到发问题的地方谢谢:  
  顺便帮我看一个问题谢谢?:  
  DMBacu.zjyz.SQL.Clear;  
              DMBacu.zjyz.SQL.Add('   SELECT   *   FROM   account_expressions16   where   uid   =   '+   IntToStr(uid));  
              try  
                  DMBacu.zjyz.Open;  
                  if   (DMBacu.zjyz.RecordCount   >   0)   then  
                    uid   :=   DMBacu.zjyz.FieldByName('uid').AsInteger;  
                    k   :=   2;  
                    Ftext   :=   '   UPDATE   account_expressions16   '  
                                  +   '   SET   ';  
   
   
   
                    DMBacu.expressions_result.SQL.Clear;  
                    DMBacu.expressions_result.SQL.Add('SELECT   *   FROM   account_coefficient');  
                    DMBacu.expressions_result.Open;  
                    DMBacu.expressions_result.First;  
                    while   (not   DMBacu.expressions_result.Eof)   and   (k   <=   DMBacu.zjyz.Fields.Count   -1)   do  
                    begin  
                        Ftext   :=   Ftext   +   DMBacu.zjyz.Fields[k].FullName   +   '   =   ';  
                        Faccount   :=   DMBacu.zjyz.Fields[k].AsFloat;  
                        Faccounts   :=   Faccount;  
                        Faccount   :=   Faccount   *   0.6   *   DMBacu.expressions_result.FieldByName('quanzhong').AsFloat;  
                        if   (Faccount   >   DMBacu.expressions_result.FieldByName('average').AsFloat)   then  
                        begin  
                            Faccount   :=   Faccounts   *   0.8   *   DMBacu.expressions_result.FieldByName('quanzhong').AsFloat;  
                            if   (Faccount   >   DMBacu.expressions_result.FieldByName('allright').AsFloat)   then  
                                Faccount   :=   Faccounts;  
                        end  
                        else  
                            if   (Faccount   <   DMBacu.expressions_result.FieldByName('inferior').AsFloat)   then  
                                Faccount   :=   Faccounts   *   0.2   *   DMBacu.expressions_result.FieldByName('quanzhong').AsFloat  
                                else  
                                    Faccount   :=   Faccounts   *   0.4   *   DMBacu.expressions_result.FieldByName('quanzhong').AsFloat;  
                        if   (k   <>   DMBacu.zjyz.Fields.Count   -1)   then  
                            Ftext   :=   Ftext   +   FloatToStr(Faccount)   +   ',   '  
                        else  
                            Ftext   :=   Ftext   +   FloatToStr(Faccount);  
                        DMBacu.expressions_result.Next;  
                        k:=   k+1;  
                    end;  
              except  
              end;  
   
   
   
  程序执行到:  
   
   
   
          while   (not   DMBacu.expressions_result.Eof)   and   (k   <=   DMBacu.zjyz.Fields.Count   -1)   do  
   
   
   
  就跳到了END;  
   
   
   
  请问各路高手能帮我修改吗谢谢·  
   
  Top

8 楼blitre(瘦死的老鼠比象大)回复于 2005-05-18 09:40:19 得分 0

为什么没有高手指教?Top

9 楼blitre(瘦死的老鼠比象大)回复于 2005-05-18 10:29:30 得分 0

我用的是ACCESS数据库,怎么调用存储过程来添加记录呢?请会的举个例子好吗?Top

10 楼fenglaile(风清飘)回复于 2005-05-18 10:44:48 得分 5

ACCESS数据库,好像不能使用存储过程的,  
  只能以条一条的插入Top

11 楼tttk(网络芝麻)回复于 2005-05-18 11:31:30 得分 5

对于ACcess数据库来说,因为是在本地运行,几千条数据根本不用考虑效率问题。  
   
  如果要考虑人机界面,不妨在插入语句的循环过程中加入  
  Application.ProcessMessages   处理消息循环,以免用户的界面出现死机现象。  
   
  Access不支持批处理插入。Top

12 楼blitre(瘦死的老鼠比象大)回复于 2005-05-18 11:36:02 得分 0

但是我插入几千条记录时CPU资源就会上升到100%啊,而且速度很慢,该如何处理呢?Top

13 楼blitre(瘦死的老鼠比象大)回复于 2005-05-18 11:41:00 得分 0

请教   tttk(网络芝麻)   (    
   
  现在主要是我一插入上千条记录时,我的CPU资源占用就为100%,而且插入2000多条记录就需要1分多钟时间,这正常吗?该怎么处理呢?我现在放在线程里执行还是没什么改观。Top

14 楼blitre(瘦死的老鼠比象大)回复于 2005-05-22 08:18:20 得分 0

还是没找到答案,极度失望。Top

相关问题

  • 添加数据速度怎么这么慢?
  • 如何提高combo box 添加数据的速度
  • 怎么样做到以最快的速度在数据库中添加记录?
  • 数据库添加
  • 添加数据库
  • 数据添加问题?
  • AdoQuery添加数据出错
  • asp.net数据添加问题!
  • 数据库操作!——添加!
  • DataGrid 数据的添加

关键词

  • 存储过程
  • 数据库
  • sql
  • dmbacu
  • faccount
  • zjyz
  • ftext
  • 添加
  • asfloat
  • fieldbyname

得分解答快速导航

  • 帖主:blitre
  • 78hgdong
  • birdhaha
  • fenglaile
  • tttk

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo