📄 dbx_mssql_connect.pas
字号:
{ Version: 2006.03.01}unit dbx_mssql_connect;interfaceuses Windows, SysUtils, Classes, SqlConst, SqlExpr, DbxOpenOdbcInterface, Registry;procedure MsSqlConnect(SQLConnection: TSQLConnection; const ServerName, DatabaseName, UserName, Password: string; DirectOdbc: Boolean = True; LoginPrompt: Boolean = False; OSAuthentication: Boolean = False; const DNS_NAME: string = ''; const AdditionalOptions: string = ''; const LanguageName: string = '');function IsPresentedMsSqlDriver(): Boolean;implementation//DSN=dsn_mssql;UID=user_name;PWD=mypassword;SERVER=server_name_or_ip;//DATABASE=database_name;Trusted_Connection=Yes;APP=application_name;//WSID=client_host_name;Network=DBMSSOCNprocedure MsSqlConnect(SQLConnection: TSQLConnection; const ServerName, DatabaseName, UserName, Password: string; DirectOdbc: Boolean = True; LoginPrompt: Boolean = False; OSAuthentication: Boolean = False; const DNS_NAME: string = ''; const AdditionalOptions: string = ''; const LanguageName: string = '');var sConnectionString: string;begin SQLConnection.Close; SQLConnection.DriverName := '@MyDriver'; SQLConnection.GetDriverFunc := 'getSQLDriverODBC'; SQLConnection.LibraryName := 'dbxoodbc.dll'; if OSAuthentication then begin LoginPrompt := False; sConnectionString := 'Trusted_Connection=Yes'; end else begin sConnectionString := 'UID=' + UserName + ';PWD=' + Password end; SQLConnection.LoginPrompt := LoginPrompt; SQLConnection.Params.Clear; SQLConnection.Params.Values['Trim Char'] := 'True'; if DirectOdbc then SQLConnection.VendorLib := 'odbc32.dll' else SQLConnection.VendorLib := 'sqlsrv32.dll'; if ServerName <> '' then sConnectionString := sConnectionString + ';SERVER=' + ServerName; if DatabaseName <> '' then sConnectionString := sConnectionString + ';DATABASE=' + DatabaseName; if LanguageName <> '' then sConnectionString := sConnectionString + ';LANGUAGE=' + DatabaseName; if AdditionalOptions <> '' then sConnectionString := sConnectionString + ';' + AdditionalOptions; sConnectionString := sConnectionString + ';' + 'coCatPrefix=DATABASE'; if DirectOdbc then sConnectionString := 'DRIVER={SQL Server};' + sConnectionString else begin if DNS_NAME <> '' then sConnectionString := 'DNS=' + DNS_NAME + ';' + sConnectionString else sConnectionString := 'DRIVER={SQL Server};' + sConnectionString; end; {$IF CompilerVersion > 14.01} // Delphi 7 Up SQLConnection.Params.Values[DATABASENAME_KEY] := '?'; SQLConnection.Params.Values[CUSTOM_INFO] := cConnectionOptionsNames[coConnectionString] + '=' + sConnectionString; {$ELSE} // Delphi 6 if Length(sConnectionString) > 255 then SetLength(sConnectionString, 255); // AV protect :( SQLConnection.Params.Values[DATABASENAME_KEY] := sConnectionString; {$IFEND} SQLConnection.Open;end;function IsPresentedMsSqlDriver(): Boolean;begin Result := False; try with TRegistry.Create(KEY_READ) do try RootKey := HKEY_LOCAL_MACHINE; if OpenKey('SOFTWARE\ODBC\ODBCINST.INI\SQL Server', False) and ValueExists('Driver') then begin Result := True; end; finally Free; end; except end;end;end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -