我有一個使用Delphi XE2編寫的簡單控制檯應用程序。爲什麼Delphi控制檯應用程序需要表單才能使TSQLConnection正常工作?
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 Error: Driver could not be properly initialized. Client library may be missing, not installed properly, of the wrong version, or the driver may be missing from the system path.'
如果我添加一個VCL形式到應用程序,我得到彈出關於啓用「可視化組件庫」的框架,我說沒有,並且沒有做任何事情,現在當我運行應用程序時,我得到'myConnection已連接'。
我能看到的唯一區別是使用子句中:
uses
System.SysUtils,
Data.DBXMSSQL,
Data.DB,
Data.SqlExpr,
Unit1 in 'Unit1.pas' {Form1}
如果我刪除1單元的「Unit1.pas」 {} Form1的從的使用條款,則應用程序無法連接。
我不想在我的控制檯應用程序中包含表單,所以當我這樣做時它會發生什麼情況?
,如果我只是添加Vcl.Controls到使用條款,因爲這有它自己的初始化和UNINIT節也有效。我知道的一點點黑客,但是當我只想要簡單的東西...... – SiBrit