zoukankan      html  css  js  c++  java
  • 自动创建数据库(DELPHI+SQL SERVER)

      procedure TForm1.Btn_OKClick(Sender: TObject);
    var sqlconn:string;
    begin
      Sqlconn:='Provider=SQLOLEDB.1;'+'password='+Edit_Password.Text
      +';Persist Security Info=true;User ID='+Edit_Name.Text
      +';Data Source='+Edit_Server.Text;
      if Edit_Server.Text=EmptyStr then begin
        showmessage('请输入SQL服务器的名称或者IP地址!');
        Edit_Server.SetFocus;
        exit;
      end;
      if Edit_Name.Text=EmptyStr then begin
        ShowMessage('请输入登陆数据库的用户名!');
        Edit_Name.SetFocus;
        exit;
      end;
    
      with ADO_Test do
        begin
          Close;
          ConnectionString :=Sqlconn;
        end;
       Try
        Try
          Ado_Test.LoginPrompt:=false;
          Ado_Test.Connected:=true;
          Messagebox(Handle,'连接成功。','提示',MB_OK or MB_ICONINFORMATION);
          Button2.Click;
        except
          Messagebox(Handle,Pchar('连接['+Edit_Server.Text+']失败!'),'警告',MB_OK or MB_ICONWARNING);
        end;
       Finally
        Ado_Test.Connected:=false;
       end;
    end;
    
    procedure TForm1.Button2Click(Sender: TObject);
    Var
      memExec,s:TStringList;
      I,J:integer;
      strSql,sqlstr,sqlconnstr:string;
    
    begin
     Sqlconnstr:='IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'''
       + 'ToolManage'''+ ') DROP DATABASE [ToolManage]';
    //不使用路径选择用缺省的
    
     sqlstr:='create database ToolManage ON (NAME = N'''+'ToolManage_Data'''
         +', FILENAME = N'''+ExtractFilePath(Application.ExeName)+'dataToolManage_Data.MDF'''
         + ', SIZE = 1, FILEGROWTH = 10%) LOG ON (NAME = N'''+'ToolManage_Log'''+', FILENAME = N'''
         + ExtractFilePath(Application.ExeName)+'dataToolManage_Log.LDF'''
         + ', SIZE = 1, FILEGROWTH = 10%) COLLATE Chinese_PRC_CI_AS';
     Try
    //   Ado_CreateSQL.SQL.Clear; //清除创建的ado的sql
    //   //建立数据库Edit_database
       Ado_CreateSQL.Connection:=Ado_Test;
       Ado_CreateSQL.Close;
       Ado_CreateSQL.SQL.Add('use master');
       Ado_CreateSQL.ExecSQL; //执行
    
        Ado_CreateSQL.Close;
        Ado_CreateSQL.SQL.Add(Sqlconnstr);
        Ado_CreateSQL.ExecSQL; //执行
    
        Ado_CreateSQL.Close;
        Ado_CreateSQL.SQL.Add(sqlstr);
        Ado_CreateSQL.ExecSQL; //执行
    
      Ado_CreateSQL.Close;
      Ado_CreateSQL.SQL.Add('use ToolManage');
      Ado_CreateSQL.ExecSQL; //执行
    
      memExec := TStringList.Create;
      s := TStringList.Create;
      try
       memExec.LoadFromFile(ExtractFilePath(Application.ExeName) + 'datasql.sql');
       s.Clear;
       for i := 0 to memExec.Count - 1 do
       begin
        if UpperCase(Trim(memExec.Strings[i])) <> '' then
        begin
         if UpperCase(Trim(memExec.Strings[i])) <> 'GO' then
          s.Add(memExec.Strings[i])
         else if UpperCase(Trim(memExec.Strings[i])) = 'GO' then
         begin
          try
           strSql := s.Text;
           with QryAll do
           begin
            Close;
            SQL.Text := strSql;
            ExecSQL;
           end;
           s.Clear;
          except
           s.Clear;
           ShowMessage(strSql);
          end;
         end;
        end;
       end;
       ShowMessage('创建 ToolManage 数据库成功!');
    
    
        with adocommand1 do
        try
         screen.Cursor := crSqlWait;
         try
          Ado_Test.Connected := false;
    
          CommandTExt := 'use master';
          execute;
          CommandText := 'ALTER DATABASE ToolManage SET OFFLINE WITH ROLLBACK IMMEDIATE';
          execute;
          CommandText := 'restore DataBase ToolManage from disk='''
            + ExtractFilePath(Application.ExeName)+'backup2008-6-5(nil).bak'''
            + ' with Replace';
          execute;
          CommandText := 'ALTER DATABASE ToolManage SET ONLINE WITH ROLLBACK IMMEDIATE';
          execute;
          CommandText:= 'Use ToolManage';
          execute;
    
          Ado_Test.Connected := true;
          CommandText :='Use ToolManage';
          execute;
          ShowMessage('初始化数据库成功!');
         finally
          screen.Cursor := crDefault;
         end;
        except
        on e: exception do
         ShowMessage('初始化数据库失败!原因是:'  +  e.Message);
        end;
    
       DataM.UserName := Trim(Edit_Name.Text);
       DataM.UserPassword := Trim(Edit_Password.Text);
       DataM.Server := Trim(Edit_Server.Text);
       Ado_Test.Connected :=false;
      finally
       memExec.Free;
       s.Free;
      end;
     except
      DataM.UserName := '';
      DataM.UserPassword := '';
      DataM.Server := '';
      close;
      Exit;
     End;
     close;
    end;
    
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
     Form1:=nil;
     Action := caFree;
    end;
    
    procedure TForm1.FormShow(Sender: TObject);
    begin
     Edit_Server.Text := '127.0.0.1';
    end;
  • 相关阅读:
    Java WEB 之页面间传递特殊字符
    c++ using Handle Class Pattern to accomplish implementation hiding
    c++ simple class template example: Stack
    c++ why can't class template hide its implementation in cpp file?
    c++ what happens when a constructor throws an exception and leaves the object in an inconsistent state?
    c++ 用namespace实现java的package的功能
    c++ virtual 和 pure virtual的区别
    c++ istream(ostream)是如何转换为bool的
    c++ 使用boost regex库 总结
    c++ 如何使用第三方的library
  • 原文地址:https://www.cnblogs.com/jijm123/p/11229026.html
Copyright © 2011-2022 走看看