(1) “备份数据”按钮的 Click 事件代码如下: procedure TForm12.BitBtn1Click(Sender: TObject); begin label1.Caption:='正在备份....'; a1.Active:=true; adoquery1.Close; adoquery2.Close; adoquery1.SQL.Clear ; adoquery2.SQL.Clear ; adoquery1.SQL.Add('backup database mydatabase to disk=''d:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\mydatabase .back'' with init'); adoquery2.SQL.Add('backup database ckgl to disk=''d:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\ckgl .back'' with init'); try adoquery1.ExecSQL ; adoquery2.ExecSQL ; label1.Caption:='备份成功!'; a1.Active:=false; showmessage('备份成功!'); except label1.Caption:='备份失败!';a1.Active:=false; showmessage('备份失败!'); end; end; (2) “还原数据”的 Click 代码如下: procedure TForm12.BitBtn2Click(Sender: TObject); begin label1.Caption:='正在恢复....'; if application.MessageBox('此操作将使上次备份以来的所有数据丢失,是否继 续?','恢复数据',MB_OKCANCEL)=idok then begin a1.Active:=true; adoconnection1.Connected:=false; adoconnection2.Open; adoquery1.connection:=adoconnection2; adoquery2.connection:=adoconnection2; adoquery1. close; adoquery2. close; adoquery1.sql.Clear; adoquery2.sql.Clear; adoquery1. sql.Add('alter database mydatabase set offline with rollback immediate'); adoquery2. sql.Add('alter database ckgl set offline with rollback immediate'); adoquery1. execsql;
adoquery2. execsql; adoquery1. close; adoquery2. close; adoquery1. sql.Clear; adoquery2.
sql.Clear; adoquery1.Close; adoquery2.Close; adoquery1.SQL.Clear ; adoquery2.SQL.Clear ; adoquery1.SQL.Add('restore database mydatabase from disk=''e:\仓库
管理系统 \BACKUP\mydatabase .back'' with replace'); adoquery2.SQL.Add('restore database ckgl from disk=''e:\ 仓 库 管 理 系 统 \BACKUP\ckgl .back'' with replace'); try try label1.Caption:='恢复成功!'; showmessage('恢复成功!'); except showmessage('数据库正在被使用!请确定已关闭其它客房管理
程序!'); label1.Caption:='恢复失败!'; a1.Active:=false; end; finally adoquery1. close; adoquery2. close; adoquery1.sql.Clear; adoquery2.sql.Clear; adoquery1. sql.add('alter database mydatabase set online with rollback immediate'); adoquery2. sql.add('alter database ckgl set online with rollback immediate'); adoquery1. execsql; adoquery2. execsql; adoconnection2.Connected:=false; adoconnection1.Open; adoquery1.connection:=adoconnection1; adoquery2.connection:=adoconnection1; a1.Active:=false; end; end; end;