CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

使用线程从远程数据库下载数据的问题

楼主riyun1975()2003-09-03 10:59:59 在 Delphi / VCL组件开发及应用 提问

我想写一个线程,线程功能:从远程数据库实时下载数据到本地库,  
    在程序运行时这个线程就运行,在程序退出时才中断,而且在程序运行的  
  时候还要考虑掉线的故障,如果网断了那么就每隔一段时间连接一次远程数据库,  
  连上了线程再继续运行直到退出程序。  
   
  谢啦!!!!!!!!!!!!!!!!!!! 问题点数:0、回复次数:4Top

1 楼ruanyuping()回复于 2003-09-03 12:05:55 得分 0

upTop

2 楼Maple119(枫叶)回复于 2003-09-03 12:26:02 得分 0

开一个线程,在线程里将远程数据库下载数据到本地缓存的作法我试过.  
  使用的是   TADOConnection   加   TADOQuery  
   
  注意:  
        在线程里不允许进行网络连接.会提示出错的.  
  解决办法是在开线程之前先进行数据连接.在线程里检测到   ADOConnection1.Connected   为假时就等待或者退出线程.  
        至于在程序运行的时候连接中断后如何再次连接数据库(线程内无法去连接),可以在主窗体上加一个   TTimer   控件.每隔一段时间去检查   ADOConnection1.Connected,检测到连接中断则再次连接数据库.  
   
  Top

3 楼fhuibo(永远深爱一个叫“莎”的好女孩儿)回复于 2003-09-03 12:30:30 得分 0

delphi中的nmftp控件中Download函数只能下载一个文件,没有提供一个下载整个目录(包含子目录)的函数。    
  file://目录下载  
   
  function   tftp.ex_download(remote_dir,local_dir:string):boolean;  
   
  var  
   
  i,j,count1:integer;  
   
  att,ss:string;  
   
  current_dir:string;  
   
  temp_dir:string;  
   
  begin  
   
  try   begin  
   
  NMFTP1.ChangeDir(remote_dir);  
   
  current_dir:=remote_dir;  
   
  temp_dir:=copy(current_dir,2,length(current_dir));  
   
  if   not   DirectoryExists(local_dir)   then   CreateDir(local_dir);  
   
  if   not   directoryexists(local_dir+temp_dir)   then   createdir(local_dir+temp_dir);  
   
  nmftp1.ParseList:=true;  
   
  NMftp1.list;  
   
  count1:=nmftp1.FTPDirectoryList.name.Count;  
   
  for   i:=0   to   count1-1   do   begin  
   
  file://必须  
   
  NMFTP1.ChangeDir(current_dir);  
   
  nmftp1.list;  
   
  ss:=nmftp1.FTPDirectoryList.name.Strings[i];  
   
  att:=nmftp1.FTPDirectoryList.Attribute.Strings[i];  
   
  if   (copy(pchar(att),1,1)<>'d')and(copy(pchar(att),1,1)<>'D')   then   begin  
   
  if   not   DirectoryExists(local_dir)   then   CreateDir(local_dir);  
   
  NMFTP1.Download(current_dir+ss,local_dir+temp_dir+ss);  
   
  end  
   
  else   begin  
   
  if   not   directoryexists(local_dir+temp_dir+ss)   then   createdir(local_dir+temp_dir+ss);  
   
  file://递归调用  
   
  ex_download(remote_dir+ss+',local_dir);  
   
  end;  
   
  end;  
   
  result:=true;  
   
  end  
   
  except  
   
  On   E:Exception   do   begin  
   
  result:=false;  
   
  end;  
   
  end;  
   
  end;  
  Top

4 楼riyun1975()回复于 2003-09-04 12:39:06 得分 0

Maple119(枫叶)  
   
  那怎样保证线程能一直在运行呢直到程序退出,写循环吗,循环的条件是什么呀??????  
  Top

相关问题

  • 关于远程数据库
  • 远程使用数据库?
  • 远程连接数据库
  • 远程访问数据库
  • 操作远程数据库
  • 操作远程数据库
  • 操作远程数据库
  • 远程数据库连接
  • 连接远程数据库
  • PB连远程数据库

关键词

  • 线程
  • 数据库
  • 远程
  • 下载
  • 连接
  • 数据
  • 中断
  • nmftp
  • dir
  • 远程数据库

得分解答快速导航

  • 帖主:riyun1975

相关链接

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

广告也精彩

反馈

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