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

📄 sqlserverlink.pas

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

interface

uses
  Windows, Messages, SysUtils, Classes, DB, ADODB, Controls, Forms, ComObj, Variants, Registry,
  strUtils;

type
  TSQLServerLink = class(tadoconnection)
  private
    { Private declarations }
    FProjectName: string;
  protected
    { Protected declarations }

  public
    { Public declarations }
  //  class function LinkToDB: Boolean;
    function SetParam: Boolean;
    function Connect: integer;
  published
    { Published declarations }
    property ProjectName: string read FProjectName write FProjectName;
  end;

procedure Register;

implementation
uses uDBLinkSetFrm;

procedure Register;
begin
  RegisterComponents('倍恩组件', [TSQLServerLink]);
end;

function TSQLServerLink.Connect: integer; // -1 未设置连接参数 0 连接失败 1 连接成功  2 在连接状态
var
  Reg: Tregistry;
  sLinkParam: string;
  sSrvName: string;
  sLogid: string;
  sLogpass: string;
  sLinkMode: string;
begin
  if Self.Connected then //已经处于连接状态
  begin
    Result := 2;
    Exit;
  end;
  Result := 0;
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_LOCAL_MACHINE;
  Reg.OpenKey('Software\倍恩科技\SQLServerLink\' + FProjectName, False);
  sLinkMode := Reg.ReadString('连接模式');
  sSrvName := Reg.ReadString('服务器名称');
  sLogid := Reg.ReadString('登录用户名');
  sLogPass := Reg.ReadString('登录密码');
  Reg.CloseKey;
  Reg.Free;
  if trim(sSrvName) = '' then
  begin
    Result := -1;
    Exit;
  end;
  if LeftStr(sLinkMode, 1) = '1' then //NT集成模式
    sLinkParam := 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=master;Data Source=' + sSrvName
  else
    sLinkParam := 'Provider=SQLOLEDB.1;Password=' + Trim(sLogpass) + ';Persist Security Info=False;User ID=' + Trim(sLogid) + ';Initial Catalog=master;Data Source=' + sSrvName;
  Self.Connected := False;
  Self.LoginPrompt := False;
  Self.ConnectionString := sLinkParam;
  Screen.Cursor := crHourglass;
  try
    Self.Connected := True;
  except
    on E: Exception do
    begin
      Screen.Cursor := crDefault;
      Application.MessageBox(Pchar('数据库连接失败!' + #13 + '可能因素:' + E.Message), '连接错误', MB_ICONSTOP);
      Exit;
    end;
  end;
  Screen.Cursor := crDefault;
  Result := 1; //连接成功
end;

function TSQLServerLink.SetParam: Boolean;
var
  SQLServer: Variant;
  ServerList: Variant;
  i, iServers: integer;
  Reg: TRegistry;
  sLinkMode: string;
begin
  Result := False;
  if Trim(FProjectName) = '' then
  begin
    Application.MessageBox('必须设置一个工程文件名称', '参数错误', MB_ICONSTOP);
    Exit;
  end;
  Screen.Cursor := crHourglass;
  FrmLinkSet := TFrmLinkSet.Create(nil);
  FrmLinkSet.sProjectName := FProjectName;
  {将本网络内装有SQL Server的服务器全部增加到SrvList中}
  SQLServer := CreateOleObject('SQLDMO.Application');
  ServerList := SQLServer.ListAvailableSQLServers;
  iServers := ServerList.Count;
  for i := 1 to iServers do
  begin
    FrmLinkSet.SrvList.items.Add(ServerList.Item(i));
  end;
  SQLServer := NULL;
  serverList := NULL;

  //初始化设置窗体的一些参数
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_LOCAL_MACHINE;
  Reg.OpenKey('Software\倍恩科技\SQLServerLink\' + FProjectName, False);
  with FrmLinkSet do
  begin
    sLinkMode := Reg.ReadString('连接模式');
    if LeftStr(sLinkMode, 1) = '1' then
      LinkMode.ItemIndex := 0
    else
      LinkMode.ItemIndex := 1;
    SrvList.Text := Reg.ReadString('服务器名称');
    Logid.Text := Reg.ReadString('登录用户名');
    LogPass.Text := Reg.ReadString('登录密码');
  end;
  Reg.CloseKey;
  Reg.Free;
  {---------------------------------------------------}
  FrmLinkSet.sProjectName := FProjectName;
  Screen.Cursor := crDefault;
  if FrmLinkSet.ShowModal = mrok then Result := True;
  FrmLinkSet.Free;
end;
end.

⌨️ 快捷键说明

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