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;