各位帮我看看这段简单的~小程序~~~~~~

mdejtod 2006-08-23 08:24:13
下面是一段恢复数据库的程序,老是提示数据库正在使用中,可我已经将连接断开了~~~不懂程序哪里有问题,各位帮帮忙~~~~
procedure TE_databaseF.Button3Click(Sender: TObject);
var conn: tadoconnection;
ado: tadocommand;
a: integer;
begin
if Application.MessageBox('数据库恢复功能只能在服务器上执行,请先确认计算机是要恢复的服务器,并且现在没有任何程序正在使用数据库,是否现在进行恢复?', '提示', mb_yesno + mb_iconquestion) = idno then
abort
else
begin
if RzOpenDialog1.Execute then
begin
E_jdF := tE_jdf.create(self);
E_jdF.Label1.Caption := '正在还原数据,这可能需要几分钟时间!';
E_jdF.Caption := '数据库还原';
conn := tadoconnection.Create(nil);
conn.LoginPrompt := false;
conn.Connected := false;
conn.ConnectionString := 'Provider=SQLOLEDB.1;User ID=' + datamodule1.user + ';Password=;Data Source=' + Datamodule1.server + '';
datamodule1.ADOConnection1.Connected := false; //断开原有连接
conn.Connected := true;
ado := tadocommand.Create(nil);
ado.Connection := conn;
ado.CommandTimeout := 300;
Application.ProcessMessages;
ado.CommandText := 'Restore database Wlzls from disk=''' + RzOpenDialog1.FileName + '''';
try
ado.Execute;
except
Application.MessageBox('数据还原失败,请确认没有其它程序已经连接到数据库!', '提示', MB_OK + MB_ICONSTOP);
E_jdF.Close;
Exit;
end;
ado.Free;
Application.MessageBox('数据还原成功!', '提示', MB_OK);
end;
E_JdF.Close;
end;
end;
...全文
103 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
mdejtod 2006-08-23
  • 打赏
  • 举报
回复
晕,问题解决~原来是还原语句有问题~~嘿嘿~
ado.CommandText := 'Restore database Wlzls from disk=''' + RzOpenDialog1.FileName + '''';//use master Restore database Wlzls from disk................................
mdejtod 2006-08-23
  • 打赏
  • 举报
回复
那adoquery1 这个是连接到哪里的啊?
giftzheng 2006-08-23
  • 打赏
  • 举报
回复
换字符串不行的

lxbsweet
正解

mdejtod 2006-08-23
  • 打赏
  • 举报
回复
我想问下一楼的,就是,你那个adoquery1 的connection是连接到哪里的?程序中的adoconncetion有没有断开呢?
mdejtod 2006-08-23
  • 打赏
  • 举报
回复
谢谢楼上的,我试试看~
lxbsweet 2006-08-23
  • 打赏
  • 举报
回复
还有我要提醒你的是 这个还原数据库的程序好像就有这么个毛病 曾经我想我们老师讨教 我们老师还不信,后来运行也发现这样的问题 他也没搞懂怎么回事 有时候又没问题 不知道真正的原因
lxbsweet 2006-08-23
  • 打赏
  • 举报
回复
procedure Tmainform.ToolButtonrestoreClick(Sender: TObject); //还原数据库
begin
try
if (Opendialog1.Execute) and (OPenDialog1.FileName <> '') then
begin
if Application.MessageBox('是否还原数据库?原有数据将被覆盖!', '提示', mb_yesno) = ID_yes then
begin
with dm1.adoquery1 do
begin
CLose;
SQL.Clear;
SQL.Add('use master restore database 数据库名 from disk=''' + OpenDialog1.FileName + '''');
ExecSQL;
end;
Application.MessageBox('还原成功!', '提示', 0);
end;
end;
except
Application.MessageBox('还原失败!', '提示', 0);
end;
with dm1.adoquery1 do
begin
CLose;
SQL.Clear;
SQL.Add('use 数据库名');
ExecSQL;
end;

end;


参考一下

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧