📄 udblinksetfrm.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 + -