毕业设计用到的,把数据库文件备份出来 然后还可以还原。比如数据库是 abao 。 谢谢啦 现在等着用呢
解决方案 »
- delphi寫的程序有什么好的安裝包制作工具推荐?
- 做网吧管理软件时碰到的问题(共200分)
- 公用打包工具中需要打包的delphi支持文件有哪些?
- 关于BDE存取数据库的问题
- 可以问一下吗:
- (未解决....在线等待....)在ListBoxcleck事件中,如何得到ListBox中的被选项的序号,或者直接返回该选项的文件名!(该选项的值为一文件
- 很急的问题,有关Timage的拖动!!!!!!!!!!!:)
- VB中的Picturebox控件在Delphi中用什么代替(也就是有句柄的Image控件)
- 怎么分段取数据?
- 注册表求救
- 用Delphi如何做网上自动投票功能。
- 请教 如何计算两个日期之间相差多少天!!!
sql.add('USE master EXEC sp_dboption goldenstone ,'+'''dbo use only'''+' , '+'''TRUE''');
sql.Add('use master backup database MyData to disk='''+trim(EdtFilename.Text)+''' with init');//数据库还原的SQL语句为:(trim(EdtFilename.Text)为还原的文件路径)
sql.Add('use master restore database MyData from disk='''+trim(edtFilename.text)+''' with replace');
begin
if self.OpenDialog1.Execute then
edit1.Text:=self.OpenDialog1.FileName;
end;procedure Trestoreform.BitBtn1Click(Sender: TObject);var sql:String;
begin
if (edit1.Text='') then
begin
Application.MessageBox('请选择文件','提示',MB_ICONWARNING);
exit;
end;
sql:='RESTORE DATABASE "cheliangguanli" FROM DISK='''+OpenDialog1.FileName+'''';
Query1.SQL.Add(sql);
Query1.ExecSQL;
Query1.SQL.Add('Use abao');
Query1.ExecSQL;
Application.MessageBox('数据库还原成功','提示',MB_ICONWARNING); end;就是这个代码可是运行的时候 还原会出问题,大概是说 数据库正在使用 出现错误 怎么改啊
ADOTemp: TADOQuery;
SqlStr: string;
begin
//输出文件名
if OutPutFile.Text = '' then
begin
Application.MessageBox('请选择文件的路径及文件名!', '系统提示', mb_OK + MB_ICONINFORMATION);
Exit;
end; try
ADOTemp := TADOQuery.Create(nil);
ADOTemp.Connection := czDM.ADOConSQL;
//备份
if RB_Backup.Checked then
begin
ADOTemp.Close;
ADOTemp.SQL.Clear;
SqlStr := 'Backup Database ' + StrDB + ' to disk = ''' + OutPutFile.Text + ''''; ADOTemp.SQL.Add(SqlStr);
ADOTemp.ExecSQL;
end;
//还原
if RB_Restore.Checked then
begin
//先断掉数据库连接
czDM.ADOConSQL.Connected := False;
SqlStr := 'Provider=SQLOLEDB.1;Password=' + StrPW +
';Persist Security Info=True;User ID=' + StrUID +
';Initial Catalog= Master ' +
';Data Source=' + StrServer + '';
czDM.ADOConSQL.ConnectionString := SqlStr;
czDM.ADOConSQL.LoginPrompt := False;
czDM.ADOConSQL.Connected := True;
//重新连接
ADOTemp.Close;
ADOTemp.SQL.Clear;
SqlStr := 'ALTER DATABASE ' + StrDB + ' SET OFFLINE WITH ROLLBACK IMMEDIATE';
ADOTemp.SQL.Add(SqlStr);
ADOTemp.ExecSQL; ADOTemp.Close;
ADOTemp.SQL.Clear;
SqlStr := 'Restore Database ' + StrDB + ' from disk =''' + OutPutFile.Text + '''';
ADOTemp.SQL.Add(SqlStr);
ADOTemp.ExecSQL; ADOTemp.Close;
ADOTemp.SQL.Clear;
SqlStr := 'ALTER DATABASE ' + StrDB + ' SET ONLINE WITH ROLLBACK IMMEDIATE';
ADOTemp.SQL.Add(SqlStr);
ADOTemp.ExecSQL; czDM.ADOConSQL.Connected := False;
SqlStr := 'Provider=SQLOLEDB.1;Password=' + StrPW +
';Persist Security Info=True;User ID=' + StrUID +
';Initial Catalog=' + StrDB +
';Data Source=' + StrServer + '';
czDM.ADOConSQL.ConnectionString := SqlStr;
czDM.ADOConSQL.LoginPrompt := False;
czDM.ADOConSQL.Connected := True;
end; ADOTemp.Free;
Application.MessageBox('完成!', '系统提示', mb_OK + MB_ICONINFORMATION);
except
Application.MessageBox('操作失败!', '系统提示', mb_OK + MB_ICONERROR);
end;
每次使用Query.SQL.add()方法前都要先关闭表和清空Query的SQL属性值,
即在用Query.SQL.add()前应先输入Query.Close;Query.SQL.Clear;(注意是每次使用前)
当执行完Query.SQL,add(),和Query.ExecSQL;后再使用Query.Open来打开数据集使其能运行SQL语句