我正在尝试使用DBExpress在运行时将SQL Server 2008与Delphi 2009连接,但它无法正常工作。当我在设计时设置所有属性时,它运行良好,但在RunTime,我得到“未知的驱动程序:mssql”。以下是代码:
scnConexao := TSQLConnection.Create(nil);
scnConexao.DriverName := 'MSSQL';
scnConexao.ConnectionName := 'MSSQLConnection';
scnConexao.GetDriverFunc := 'getSQLDriverMSSQL';
scnConexao.LibraryName := 'dbxmss.dll';
scnConexao.VendorLib := 'oledb';
scnConexao.LoginPrompt := False;
scnConexao.Params.Add('SchemaOverride=sa.dbo');
scnConexao.Params.Add('HostName=DESKTOP');
scnConexao.Params.Add('DataBase=DBNAME');
scnConexao.Params.Add('OS Authentication=False');
scnConexao.Params.Add('User_Name=UserName');
scnConexao.Params.Add('Password=Password');
scnConexao.Params.Add('MSSQL TransIsolation=ReadCommited');
scnConexao.Open;
我已将dbxmss.dll包含在与我的应用程序相同的目录中,但无济于事。任何帮助将不胜感激。
TKS
答案 0 :(得分:0)
试试这个:
With MSSQLCONNECTION do begin
ConnectionName:= 'SQLCONN';
LoadParamsFromIniFile('file.ini');
try
Connected:=true;
Execute('select * from auto',nil);
except
on E: Exception do begin
ShowException(E, nil);
Halt(1);
end;
end;
端;
base.ini:
[SQLCQONN]
bad param
drivername=MSSQL
schemaoverride=%.dbo
vendorlibwin64=sqlncli10.dll
HostName=localhost\sqlexpress
database=sec
user_name=sa
password=Guess
blobsize=-1
localecode=0000
isolationlevel=ReadCommitted
os authentication=False
有关详细信息,请参阅http://docwiki.embarcadero.com/RADStudio/en/Setting_Up_TSQLConnection
答案 1 :(得分:0)
我在Delphi 2007和MSSQL上都很幸运。您可能需要更改DLL名称以匹配Delphi / DBExpress版本中的MSSQL驱动程序版本。另外,我使用的是SQL身份验证(aka SSPI),而不是SQL用户名和密码:
FSQLConnection := TSQLConnection.Create(Self);
FSQLConnection.ConnectionName := 'MSSQLConnection';
FSQLConnection.DriverName := 'MSSQL';
FSQLConnection.GetDriverFunc := 'getSQLDriverMSSQL';
FSQLConnection.LibraryName := 'dbxmss30.dll';
FSQLConnection.VendorLib := 'oledb';
FSQLConnection.LoginPrompt:= False;
FSQLConnection.Params.Values['SchemaOverride'] := 'sa.dbo';
FSQLConnection.Params.Values['DriverName'] := 'MSSQL';
FSQLConnection.Params.Values['BlobSize'] := '-1';
FSQLConnection.Params.Values['ErrorResourceFile'] := '';
FSQLConnection.Params.Values['LocaleCode'] := '0000';
FSQLConnection.Params.Values['MSSQL TransIsolation'] := 'ReadCommited';
FSQLConnection.Params.Values['OS Authentication'] := 'True';
FSQLConnection.Params.Values['Prepare SQL'] := 'False';
FSQLConnection.Params.Values['HostName'] := 'MyServerName';
FSQLConnection.Params.Values['DataBase'] := 'MyDatabaseName';