写“压缩数据库”按钮代码如下: procedure TForm16.BitBtn2Click(Sender: TObject); begin dir:=drive; Screen.Cursor := crHourGlass; if not CompactDataBaseDao(trim(edit1.text)) then MessageDlg('压缩过程出现错误!请确认数据库没有被使用、数据库是否存在!',mtWarning, [mbOk], 0) else MessageDlg('压缩完毕!!', mtInformation, [mbOk], 0); Screen.Cursor := crDefault; end; 上述代码使用了f_access中的函数CompactDataBaseDao。写“备份数据库”按钮代码如下: procedure TForm16.BitBtn1Click(Sender: TObject); var dfpath:string; begin if not DirectoryExists(trim(edit2.text)) then begin if MessageDlg('目录还不存在,是否要创建此目录?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin mkdir(trim(edit2.text)); if IOResult <> 0 then MessageDlg('不能创建目录,请检查输入的路径是否正确!', mtWarning, [mbOk], 0); exit; end else exit; end; dfpath:=trim(edit2.text); if dfPath[Length(dfPath)] <> '\' then dfPath := dfPath + '\'; FileCopy1.SourceFile :=trim(edit1.Text) ; FileCopy1.TargetFile :=dfpath+'lklb.mdb'; FileCopy1.ExecCopy; MessageDlg('OK!',mtInformation, [mbOk], 0); end; 上述代码中要注意对路径中“\”的处理,仔细看看吧。在恢复数据库时如果数据库不在默认备份路径下,需要寻找数据库,所以放置了一个“打开”文件对话框,对“打开”按钮写代码如下: procedure TForm16.Button1Click(Sender: TObject); var s:string; begin if openDialog1.Execute then begin s:=ExtractFilePath(opendialog1.FileName); edit3.text:=s+'lklb.mdb'; end; end; 对“恢复数据库” 写如下代码: procedure TForm16.BitBtn5Click(Sender: TObject); begin FileCopy1.SourceFile :=trim(edit3.Text) ; FileCopy1.TargetFile :=trim(edit1.Text) ;; FileCopy1.ExecCopy; MessageDlg('OK!',mtInformation, [mbOk], 0); end; 其他一些警告提示信息自己看着写吧。 图11-1 数据库维护
图11-1 数据库维护
bcp "lsdmis.dbo.BM_SPDA" OUT ".\data\BM_SPDA.TXT" -f .\fmt\BM_SPDA.fmt -C -U"SA" -P"SA"
倒入(先把原数据清空:)
bcp "lsdmis.dbo.BM_SPDA" IN ".\data\BM_SPDA.TXT" -f .\fmt\BM_SPDA.fmt -C -U"SA" -P"SA"
导多个表的话,就些个批量文件吧,然后在程序中执行这个批量脚本就可以了
1. whbo(王红波) ,你压缩、备份的是Access哦。
2.caiminjiang0(我只有一个理想) ,使用系统的人都没有你这么高智商啊,最好是傻瓜式操作,点点MOUSE就可以实现的。
var
s_backuppath:string;
s_server:string;
s_database:string;
s_backupfilename:string;
begin
StatusBar1.Panels[2].text:='';
StatusBar1.Panels[2].text:='请等候,数据库备份中......';
s_backuppath:=edit1.Text;
s_server:=edit2.Text;
s_database:=edit3.Text;
s_backupfilename:=s_backuppath+datetostr(now);
Adocommand1.ConnectionString :='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog='+s_database+';Data Source='+s_server;
ADOCommand1.CommandText := 'use Master';
ADOCommand1.Execute;
adocommand1.CommandText := 'execute sp_helpdevice';
adocommand1.Execute;
adocommand1.CommandText := 'backup database ' + s_database + ' to disk=''' +s_backupfilename + ''' with init';
//adocommand1.CommandText := 'backup database ' + 'BanShanDB' + ' to disk=''' +'c:\data.bak' + ''' with init';
adocommand1.Execute;
adocommand1.CommandText := 'Use ' + s_database;
adocommand1.Execute;
StatusBar1.Panels[2].text:='';
StatusBar1.Panels[2].text:='数据库备份完成!';
// application.MessageBox('已经成功备份数据库','数据库备份',MB_OK + MB_ICONINFORMATION);
end;