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

📄 createdb.pas

📁 详细说明:毕业论文中关于小型宾馆管理系统的详细设计毕 业论文中关于小型宾馆...一个酒店管理系统VB+Access [学生学籍管理系统(VB+Acess).zip] - !这个是刚刚编的毕业设计,可能
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit createdb;

interface
                                
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls,StdCtrls,Calendar, Grids, Spin, Buttons,FileCtrl,
  Gauges, Db, DBTables, ComCtrls, ADODB,registry,Barthread;

const

   PDOMS_SQL70_CREATETB = 'CSI_XWFD.sql';
   PDOMS_SQL70_CREATEDB = 'CSI_XWFD.sql';


type
  TMainForm = class(TForm)
    WizardNotebook: TNotebook;
    GroupBox1: TGroupBox;
    rbCdb: TRadioButton;
    rbCtb: TRadioButton;
    rbBoth: TRadioButton;
    rbSkip: TRadioButton;
    Label11: TLabel;
    GroupBox4: TGroupBox;
    Label8: TLabel;
    Label15: TLabel;
    SpeedButton2: TSpeedButton;
    Label17: TLabel;
    Label18: TLabel;
    dbSize: TSpinEdit;
    elocation: TEdit;
    dbName: TEdit;
    dbType: TComboBox;
    cbTc: TCheckBox;
    Label20: TLabel;
    Animate1: TAnimate;
    ADO: TADOConnection;
    Memo1: TMemo;
    Panel1: TPanel;
    Image1: TImage;
    Label3: TLabel;
    Label5: TLabel;
    Panel2: TPanel;
    Label7: TLabel;
    Label14: TLabel;
    Label16: TLabel;
    Panel3: TPanel;
    Label12: TLabel;
    spLog: TSpinEdit;
    Label1: TLabel;
    ProgressBar1: TProgressBar;
    Panel4: TPanel;
    btnNext: TButton;
    btnFinish: TButton;
    Back: TButton;
    Bevel1: TBevel;
    Image2: TImage;
    Image4: TImage;


    procedure FormCreate(Sender: TObject);



    procedure SpeedButton1Click(Sender: TObject);
    procedure eLocationExit(Sender: TObject);
    procedure cbTcClick(Sender: TObject);
    procedure dbTypeExit(Sender: TObject);
    procedure btnNextClick(Sender: TObject);
    procedure btnFinishClick(Sender: TObject);
    procedure BackClick(Sender: TObject);


  private
    { Private declarations }
    function  ExecuteCreate:Boolean;
    function  WinExecAndWait32(FileName:String; Visibility : integer):integer;
    function  CreateTable:boolean;
    function  CreateDB:boolean;
    function  GetCompname:string;
    function  GetdeviceNum:String;
    procedure SetdeviceNum(sNum:String);

    procedure sysDelay(aMs: Longint);
    procedure StartThread;
    procedure StopThread;
    procedure ExecThread(str:string);


  public
    { Public declarations }
  end;

var
  MainForm: TMainForm;
  bDB,bTable,bBoth,bSkip,bTC:Boolean;
  sDbname,sDbType,sLoginid,sPassword,sLocation:string;
  nSize:integer;
  DBThread:TBarThread;

implementation

{$R *.DFM}



procedure TMainForm.FormCreate(Sender: TObject);
var
  Reg: TRegistry;
  str:string;
begin
  WizardNotebook.ActivePage:='STEP1';
  dbtype.itemIndex:=0;
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    if Reg.OpenKey('\SOFTWARE\MicroSoft\MSSQLServer\Setup', True) then begin
       str:=Reg.ReadString('SQLDataRoot');
       if str<>'' then begin
          elocation.Text:=str+'\data';
       end;
    end;
  finally
    Reg.CloseKey;
    Reg.Free;

  end;


end;




procedure TMainForm.SpeedButton1Click(Sender: TObject);
var dir:string;
begin
   if SelectDirectory(dir, [sdAllowCreate, sdPrompt, sdPerformCreate], 0) then begin
        if not DirectoryExists(dir) then begin
           MessageDlg('不能建立目录!', mtError, [mbCancel], 0);
           Exit;
        end;
        eLocation.Text:=dir;
   end;
end;

procedure TMainForm.eLocationExit(Sender: TObject);
begin
      try

          if not DirectoryExists(eLocation.text) then
               if not ForceDirectories(eLocation.text) then begin
                   MessageDlg('不能建立目录 !',mtwarning,[mbCancel],0);
                   eLocation.SetFocus;
                   Exit;
               end;

        except
            MessageDlg('不能建立目录 !',mtwarning,[mbCancel],0);
            eLocation.SetFocus;
            Exit;
        end;
end;

procedure TMainForm.cbTcClick(Sender: TObject);
begin
    bTC := cbTc.Checked;

end;


procedure TMainForm.dbTypeExit(Sender: TObject);
begin
    if dbtype.text='' then begin
       dbtype.setfocus;
       Exit;
    end;
end;

function TMainform.CreateTable:boolean;
var   Str:string;
      r:integer;
begin


   if (bDB) or (bBoth) then begin
                  Str:='"'+ExtractFilePath(Application.ExeName)+'ISQL.exe'+'"'+ ' -E -d '+dbName.Text
                    +' -i '+'"'+ExtractFilePath(Application.ExeName)+PDOMS_SQL70_CREATETB+'"'+' -l45';


   end;


   {if MessageDlg(' Are you sure you want to create table? ', mtInformation, [mbYes, mbNo], 0)=mrNo then begin
                 Result:=FALSE;
                 Exit;
   end;
   }
   //startThread;
   try
      Animate1.FileName:=ExtractFilePath(Application.ExeName)+'filedisk.avi';
      Animate1.Active:=true;
      Animate1.Visible:=True;
   except
   end;
   sysDelay(6000);
   r:=WinExecAndWait32(PChar(str), SW_HIDE);//SW_SHOWDEFAULT);
   if r<>0 then begin
               Application.MessageBox('不能建立表.', PChar(str), mb_OK);
               Result:=FALSE;
               Exit;
   end;

   Result:=TRUE;
end;
//
function TMainform.CreateDB:boolean;
var
      str,SQLstmt,SQLstmt1: String;
      r:integer;
      computername:string;
      CommandType: TCommandType;
      //ExecuteOptions: TExecuteOptions;
      sDevNum:string;
begin

  try

    sDevNum:=GetDeviceNum;

      SQLstmt := 'Use master '+#13+
         'CREATE DATABASE '+dbName.text+ #13+
         'ON '+#13+
         '(NAME ='+ dbName.text+'_Data,'+#13+
         'FILENAME= ' +''''+ elocation.text+'\'+dbName.text+'_Data.mdf'+''''+','+#13+
         'SIZE = '+dbSize.Text+')'+#13+

         'LOG ON '+#13+
         '(NAME ='+ dbName.text+'_Log,'+#13+
         'FILENAME= ' +''''+ elocation.text+'\'+dbName.text+'_log.ldf'+''''+','+#13+
         'SIZE = '+spLog.Text+')'+#13+

         ' USE MASTER '+#13+
         ' IF NOT EXISTS (SELECT * FROM syslogins WHERE name = '+''''+'PDOMS_USER'+''''+') '+
         ' exec sp_addlogin '+ ''''+'PDOMS_USER'+''''+','+''''+'0x2131222B2B2D4E5F214444555C593B21'+''''+','+''''+dbName.text+''''+#13;

         SQLstmt1:=' use '+dbName.Text+' '+#13+
         ' exec sp_adduser '+''''+'PDOMS_USER'+''''+','+''''+'PDOMS_USER'+''''+','+''''+'db_owner'+''''+#13;

       {if MessageDlg(' Are you sure you want to create database? ', mtInformation, [mbYes, mbNo], 0)=mrNo then begin
                 Result:=FALSE;
                 SetdeviceNum(sDevNum);
                 //Database.Connected:=FALSE;
                 Exit;
      end;}

      try
      //StartThread;
      Animate1.FileName:=ExtractFilePath(Application.ExeName)+'filedisk.avi';
      Animate1.Active:=true;
      Animate1.Visible:=true;
      except
      end;
      sysDelay(6000);

      computername:=GetCompName;
      Memo1.Clear;
      Memo1.Lines.Add(SQLstmt);
      Memo1.Lines.SaveToFile(eLocation.text+'\Create70.sql');
      Str:='"'+ExtractFilePath(Application.ExeName)+'ISQL.exe'+'"'+ ' -E -d master'
               +' -i '+'"'+eLocation.text+'\Create70.sql'+'"'+' -l45';


      r:=WinExecAndWait32(PChar(str), SW_HIDE);
      if r<>0 then begin

               Application.MessageBox('不能建立数据库.', PChar(str), mb_OK);
               SetdeviceNum(sDevNum);
               DeleteFile(eLocation.text+'\Create70.sql');
               Result:=FALSE;
               Exit;
      end;

      DeleteFile(eLocation.text+'\Create70.sql');

      {ADO.ConnectionString:='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=master;Data Source='+
                         computername;


      ADO.Connected:=TRUE;

      ADO.Execute(SQLstmt,commandtype,ExecuteOptions);}
      //
      sysDelay(6000);
      //
      Memo1.Clear;
      Memo1.Lines.Add(SQLstmt1);
      Memo1.Lines.SaveToFile(eLocation.text+'\Create70.sql');
      Str:='"'+ExtractFilePath(Application.ExeName)+'ISQL.exe'+'"'+ ' -E -d master'
               +' -i '+'"'+eLocation.text+'\Create70.sql'+'"'+' -l45';


      r:=WinExecAndWait32(PChar(str), SW_HIDE);
      if r<>0 then begin

               Application.MessageBox('不能建立数据库用户.', PChar(str), mb_OK);
               SetdeviceNum(sDevNum);
               DeleteFile(eLocation.text+'\Create70.sql');
               Result:=FALSE;
               Exit;
      end;

      DeleteFile(eLocation.text+'\Create70.sql');


  except
      //stmtParams.Free;
      ADO.Connected:=FALSE;

      Result:=FALSE;
      Exit;
  end;

      Result:=TRUE;
end;

function TMainform.ExecuteCreate:Boolean;
begin


    // Create DB
    if (bDB) then begin
       startThread;
       if Not CreateDB then begin
          MessageDlg('不能建立数据库. ', mtInformation, [mbCancel], 0);
          Animate1.Active:=false;
          WizardNoteBook.ActivePage:='Step2';
          Stopthread;
          Result:=FALSE;

⌨️ 快捷键说明

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