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

📄 udblinksetfrm.pas

📁 DELPHI中SQLServer数据库存的控件挺专业呀
💻 PAS
字号:
unit uDBLinkSetFrm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, DB, ADODB, Registry, strUTils;

type
  TFrmLinkSet = class(TForm)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    LinkMode: TComboBox;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    sbok: TSpeedButton;
    sbcancel: TSpeedButton;
    TestLink: TCheckBox;
    SrvList: TComboBox;
    logid: TEdit;
    Logpass: TEdit;
    ADOCONTest: TADOConnection;
    procedure sbcancelClick(Sender: TObject);
    procedure sbokClick(Sender: TObject);
    procedure LinkModeChange(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    sProjectName: string;
  end;

var
  FrmLinkSet: TFrmLinkSet;

implementation

{$R *.dfm}

procedure TFrmLinkSet.sbcancelClick(Sender: TObject);
begin
  Close;
end;

procedure TFrmLinkSet.sbokClick(Sender: TObject);
var
  sLinkParam: string;
  Reg: TRegistry;
begin
  if LinkMode.Text = '' then
  begin
    application.MessageBox('必须选择一种连接模式!', '错误', MB_ICONERROR);
    Exit;
  end;
  if Trim(SrvList.Text) = '' then
  begin
    Application.MessageBox('必须设置一个可用的服务器名称或IP地址!', '错误', MB_ICONSTOP);
    Exit;
  end;
  if (Logid.Enabled) and (Trim(Logid.Text) = '') then
  begin
    Application.MessageBox('选择混合登录模式必须设置一个可用的登录用户名!', '错误', MB_ICONSTOP);
    Exit;
  end;
  if TestLink.Checked then //需要测试连接参数
  begin
    Screen.Cursor := CrHourglass;
    if LeftStr(LinkMode.Text, 1) = '1' then //NT集成模式
      sLinkParam := 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=master;Data Source=' + SrvList.text
    else
      sLinkParam := 'Provider=SQLOLEDB.1;Password=' + Trim(Logpass.Text) + ';Persist Security Info=False;User ID=' + Trim(Logid.Text) + ';Initial Catalog=master;Data Source=' + SrvList.Text;
    ADOCONTest.Close;
    ADOCONTest.LoginPrompt:=False;
    ADOCONTest.ConnectionString := sLinkParam;
    try
      ADOCONTest.Connected := True;
    except
      on E: Exception do
      begin
        Screen.Cursor := CrDefault;
        Application.MessageBox(PChar('测试错误:数据库连接失败!' + #13 + E.message), '测试错误', MB_ICONERROR);
        Exit;
      end;
    end;
    Screen.Cursor := CrDefault; //测试通过
  end;
   //将连接参数保存到注册表
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_LOCAL_MACHINE;
  Reg.OpenKey('Software\倍恩科技\SQLServerLink\' + sProjectName, True);
  Reg.WriteString('连接模式', LinkMode.Text);
  Reg.WriteString('服务器名称', SrvList.Text);
  Reg.WriteString('登录用户名', Trim(Logid.Text));
  Reg.WriteString('登录密码', Trim(LogPass.Text)); //当然,也可以用加密函数加密,不过在读出的时候需要解密,呵呵
  Reg.CloseKey;
  Reg.Free;
  if ADOCONTest.Connected then ADOCONTest.Connected := False;
  ModalResult := Mrok;
end;

procedure TFrmLinkSet.LinkModeChange(Sender: TObject);
begin
  if LeftStr(LinkMode.Text, 1) = '1' then //这是NT模式
  begin
    Logid.Enabled := False;
    LogPass.Enabled := False;
    Logid.Color:=clScrollBar;
    Logpass.Color:=clScrollBar;
  end
  else begin
    Logid.Enabled := True;
    Logpass.Enabled := True;
    Logid.Color:=clWindow;
    LogPass.Color:=clWindow;
  end;
end;

procedure TFrmLinkSet.FormShow(Sender: TObject);
begin
    LinkMode.OnChange(Sender);
end;

end.

⌨️ 快捷键说明

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