【发布时间】:2014-05-02 17:39:52
【问题描述】:
我有一个使用 Delphi XE2 编写的简单控制台应用程序。
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils,
Data.DBXMSSQL,
Data.DB,
Data.SqlExpr;
var
myConnection: TSQLConnection;
begin
try
{ TODO -oUser -cConsole Main : Insert code here }
myConnection := TSQLConnection.Create(nil);
myConnection.DriverName := 'MSSQL';
myConnection.GetDriverFunc := 'getSQLDriverMSSQL';
myConnection.LibraryName := 'dbxmss.dll';
myConnection.VendorLib := 'sqlncli10.dll';
myConnection.LoginPrompt := False;
myConnection.Params.Clear;
myConnection.Params.Add('drivername=MSSQL');
myConnection.Params.Add('schemaoverride=%.dbo');
myConnection.Params.Add('hostname=myserver');
myConnection.Params.Add('database=mydb');
myConnection.Params.Add('blobsize=1');
myConnection.Params.Add('localcode=0000');
myConnection.Params.Add('isolationlevel=ReadCommited');
myConnection.Params.Add('os authentication=True');
myConnection.Params.Add('prepare sql=False');
myConnection.Connected := true;
Writeln('myConnection Is connected');
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
Readln;
end.
当我运行这个时,我得到这个错误:
'DBX 错误:驱动程序无法正确初始化。客户端库 可能缺少、未正确安装、错误的版本,或者 系统路径中可能缺少驱动程序。'
如果我向应用程序添加 VCL 表单,我会弹出关于启用“Visual Component Library”框架的弹出窗口,我说 No 拒绝,并且没有做任何其他事情,现在当我运行应用程序,我得到“myConnection 已连接”。
我能看到的唯一区别是uses子句:
uses
System.SysUtils,
Data.DBXMSSQL,
Data.DB,
Data.SqlExpr,
Unit1 in 'Unit1.pas' {Form1}
如果我从 uses 子句中删除 'Unit1.pas' {Form1} 中的 Unit1,则应用无法连接。
我不想在我的控制台应用程序中包含表单,那么当我这样做时程序会发生什么情况?
【问题讨论】:
标签: sql-server delphi console-application