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



