2010-05-24 128 views
2

我想在运行时与SQL Server 2008与德尔福2009年使用DBExpress连接,它不工作。当我在设计时设置所有属性时,它运行良好,但在RunTime,我得到“未知驱动程序:mssql”。下面是代码:
DBExpress连接SQL 2008在运行时与德尔福2009年


    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,但无济于事。任何帮助将不胜感激。
韩国社交协会

+0

貌似没有人注意到这一点。我添加了更通用的“delphi”标签,以便获得更多视图。 – 2010-05-27 17:40:35

+1

我读了几次,通过在uses子句中包含相关单元解决了此问题,在这种情况下我认为“DBXMsSql”。顺便说一句,改变连接名称的AFAIK将重置驱动程序名称,因此预先设置驱动程序名称没有意义。 – 2010-05-28 02:06:06

回答

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