⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainunit1.pas

📁 对SQLSERVER数据库实现备份、恢复、压缩
💻 PAS
字号:
unit MainUnit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, RzPanel, RzStatus, ComCtrls, RzTreeVw, StdCtrls,
  RzLabel, RzButton, Mask, RzEdit, jpeg, Menus,Registry, Grids, DBGrids, DB, ADODB,
  ImgList, RzCmboBx, RzShellDialogs,unit2,unit3,QStdCtrls;

type
  TForm1 = class(TForm)
    RzGroupBox1: TRzGroupBox;
    Image1: TImage;
    EDT_filename: TRzEdit;
    RzBitBtn1: TRzBitBtn;
    RzBitBtn2: TRzBitBtn;
    RzLabel1: TRzLabel;
    RzLabel2: TRzLabel;
    RzGroupBox2: TRzGroupBox;
    RzBitBtn3: TRzBitBtn;
    RzBitBtn4: TRzBitBtn;
    RzBitBtn5: TRzBitBtn;
    TRV: TRzTreeView;
    MainMenu1: TMainMenu;
    FILE1: TMenuItem;
    EXIT1: TMenuItem;
    RzBitBtn6: TRzBitBtn;
    ImageList1: TImageList;
    COMB_dbname: TRzComboBox;
    OPEN_flag: TOpenDialog;
    adocon: TADOConnection;
    Refresh1: TMenuItem;
    procedure RzButton1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure RzBitBtn2Click(Sender: TObject);
    procedure RzBitBtn1Click(Sender: TObject);
    procedure RzBitBtn3Click(Sender: TObject);
    procedure RzBitBtn4Click(Sender: TObject);
    procedure addnode();
    procedure RzBitBtn6Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure TRVDblClick(Sender: TObject);
    procedure Refresh1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
   query:Tadoquery;
 linkstr,sql,datafiles,logfiles,sql1,sql2,sql3:string;
 regi:Tregistry;

implementation
{$R *.dfm}

procedure TForm1.RzButton1Click(Sender: TObject);
begin
application.Terminate;
end;

procedure TForm1.FormCreate(Sender: TObject);

begin

 { if dataname.Text='' then
   begin
     messagedlg('请输入实例名',mtinformation,[mbyes],0);
     exit;
   end;
   if datafile.Text='' then
   begin
     messagedlg('请设置数据文件路径',mtinformation,[mbyes],0);
     exit;
   end;
   if logfile.Text='' then
   begin
     messagedlg('请设置日志文件路径',mtinformation,[mbyes],0);
     exit;
   end;
   regi:=Tregistry.Create;
   try
     regi.RootKey:=HKEY_LOCAL_MACHINE;
     if not Regi.OpenKey('\Software\Microsoft\microsoft sql server\80\registration', True) then
     begin
        messagedlg('您的机子没有安装microsoft sql server请先安装microsoft sql server2000',mtinformation,[mbyes],0);
        exit;
     end;
   finally
    Regi.Free;
    inherited;
   end;}
  { linkstr:='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=master;Data Source=HHHH';

   query:=Tadoquery.Create(self);
   query.ConnectionString:=linkstr;
   query.SQL.Clear;
   query.SQL.Add('select * from  sysdatabases');
   try
     query.Open;
   except
     messagedlg('数据库实例名错误或者是您的数据库没有正常启动!',mterror,[mbyes],0);
     query.Close;
     query.Free;
     exit;
   end;
    BOOTNode:=TRV.Items.Add(nil,'SERVER');
     BOOTNode.ImageIndex:=0;
     FOR i:=0 to query.Recordset.RecordCount-1 do
        begin
          cnd:=TRV.Items.AddChild(BOOTNode,query.fieldbyname('name').AsString);
          cnd.ImageIndex:=1;
          cnd.SelectedIndex:=1;
          COMB_dbname.Items.Add(query.fieldbyname('name').AsString);
           query.Next;
        end;}
   //query.FieldByName('name').AsString
   {i:=1;

   query.SQL.Clear;
   query.SQL.Add('select * from sysdatabases where name=''zhjwdb''');
   query.Open;
   if  not query.Eof then
   begin
     messagedlg('教务系统数据库已经创建请先删除zhjwdb,或者是重新命名数据库后再创建',mterror,[mbyes],0);
     query.Close;
     query.Free;

     exit;
   end;
   //timer1.Enabled:=true;
   cursor:=crsqlwait;
   datafiles:=datafile.Text+'\zhjwxt.mdf' ;
   logfiles:=logfile.Text+'\zhjwxt.ldf';
   sql:='   CREATE DATABASE zhjwdb   ON(NAME=zhjwdb_dat,FILENAME='''+datafiles+''',SIZE=10,FILEGROWTH=5)   LOG ON (NAME=zhjwdb_iog,FILENAME='''+logfiles+''',SIZE=10MB,FILEGROWTH=5)    ';
   adoconnection1.BeginTrans;
   try
      query.SQL.Clear;
      query.SQL.Add(sql);
      query.ExecSQL;  //create datebase

      sql1:='C:\program files\JWXT\db.bak' ;
      sql2:='ZHJWDB_Data';
      sql3:='ZHJWDB_Log';
      sql:='  RESTORE DATABASE zhjwdb   FROM DISK ='''+sql1+'''  WITH   MOVE  '''+sql2+'''  TO '''+datafiles+''', MOVE '''+sql3+''' TO '''+logfiles+''',REPLACE ' ;
      query.SQL.Clear;
      query.SQL.Add(sql);
      query.ExecSQL;
      adoconnection1.CommitTrans;
   except
     adoconnection1.RollbackTrans;
     messagedlg('数据库生成失败请重新正确输入参数或者是查看您安装的教务系统是否成功!',mterror,[mbyes],0);
     cursor:=crdefault;
     query.close;
     query.Free;
     exit;
   end;
   messagedlg('数据库创建成功'+#13+'数据库名为:zhjwxt'+#13+'数据文件目录为:'+datafiles+#13+logfiles,mtinformation,[mbyes],0);
   cursor:=crdefault;
//释放query;
  query.Close;
  query.Free;  }

end;

procedure TForm1.RzBitBtn2Click(Sender: TObject);
begin
if (COMB_dbname.Text='') and (EDT_filename.Text='') then
  begin
  messagedlg('请选择要恢复的数据库或数据库路径!',mtinformation,[mbok],0);
  exit;
  end;
  query.Close;
  query.SQL.Clear;
  query.SQL.Add('RESTORE DATABASE '+COMB_dbname.Text+' from disk='+''''+EDT_filename.Text+'''');
  messagedlg('RESTORE DATABASE '+COMB_dbname.Text+' from disk='+''''+EDT_filename.Text+'''',mtinformation,[mbok],0);
  try
    query.ExecSQL;
  except
    begin
     messagedlg('正在恢复数据库时只可以为单用户操作!',mterror,[mbok],0);
     exit;
    end;
     end;
    messagedlg('数据库'+'['+COMB_dbname.Text+']'+'恢复完毕!',mtinformation,[mbok],0);
    close;
end;

procedure TForm1.RzBitBtn1Click(Sender: TObject);
begin
OPEN_flag.Title:='打开一个数据库文件';
OPEN_flag.Filter:='备份文件 (*.bak)|*.bak|All files (*.*)|*.*';
if OPEN_flag.Execute then
   begin
   if OPEN_flag.FileName<>'' then
      begin
       EDT_filename.Text:=OPEN_flag.FileName;
      end;
   end;

end;

procedure TForm1.RzBitBtn3Click(Sender: TObject);

begin
form2.ShowModal;
end;

procedure TForm1.RzBitBtn4Click(Sender: TObject);
var
 select_database:string;
begin
select_database:=TRV.Selected.Text;
if TRV.Selected.Text='' then
   begin
    messagedlg('请选择要删除的数据库!',mtinformation,[mbok],0);
    exit;
   end;
query.Close;
  query.SQL.Clear;
  query.SQL.Add('DROP DATABASE '+TRV.Selected.Text );

 try
   if messagedlg('真的要删除'+'['+TRV.Selected.Text+']'+'数据库吗?',mtinformation,[mbyes,mbno],0)=mryes then

    query.ExecSQL
   else
   exit;
 except
  begin
   messagedlg('['+select_database+']'+'删除失败!',mterror,[mbok],0);
   exit;
  end;
 end;
 COMB_dbname.Clear;
 form1.TRV.Items.Clear;
 addnode();
 messagedlg('['+select_database+']'+'删除成功!',mtinformation,[mbok],0);
end;
procedure TForm1.addnode();
var
i,j:integer;
BOOTNode,cnd,cnd1: TTreeNode;
templist:tlistbox;
BEGIN
   linkstr:='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=master;Data Source=HHHH';

   query:=Tadoquery.Create(self);
     query.Connection:=adocon;
  query.ConnectionString:=linkstr;
   query.SQL.Clear;
   query.SQL.Add('select * from  sysdatabases');
   try
     query.Open;
   except
     messagedlg('数据库实例名错误或者是您的数据库没有正常启动!',mterror,[mbyes],0);
     query.Close;
     query.Free;
     exit;
   end;
    BOOTNode:=TRV.Items.Add(nil,'SERVER');
     BOOTNode.ImageIndex:=0;
     FOR i:=0 to query.Recordset.RecordCount-1 do
        begin
          cnd:=TRV.Items.AddChild(BOOTNode,query.fieldbyname('name').AsString);
          cnd.ImageIndex:=1;
          cnd.SelectedIndex:=1;

          COMB_dbname.Items.Add(query.fieldbyname('name').AsString);
            //增加数据库表 -----------------------------------------------------
          adocon.Close;
          adocon.ConnectionString:='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog='+query.fieldbyname('name').AsString+';Data Source=HHHH';

          adocon.LoginPrompt:=false;
          adocon.Open;

          templist:=tlistbox.Create(self);
          adocon.GetTableNames(templist.Items,true);
          for j:=0 to templist.Items.Count-1 do
          begin
           cnd1:=TRV.Items.AddChild(cnd,templist.Items.Strings[j]);
           cnd1.ImageIndex:=5;
           cnd1.SelectedIndex:=5;
          end;
            //------------------------------------------------------------------

           query.Next;
        end;
         adocon.Connected:=false;
         adocon.KeepConnection:=false;
         adocon.Close;
      //templist.Free;
        
END;
procedure TForm1.RzBitBtn6Click(Sender: TObject);
begin
close;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
addnode();
end;

procedure TForm1.TRVDblClick(Sender: TObject);
begin
 form3.ShowModal;
end;

procedure TForm1.Refresh1Click(Sender: TObject);
begin
COMB_dbname.Clear;
 form1.TRV.Items.Clear;
 addnode();
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -