0
我正在比較BDE和DBExpress組件,並嘗試在TMPTABLE中執行簡單更新。Delphi DBExpress SQLDataSet.ExecSQL凍結
當我使用BDE TQuery Query.ExecSQL工作正常, ,但如果我使用DBExpress TSQLDataSet,它凍結在SQLDataSet.ExecSQL中。
我在Win7 64b中使用Delphi XE3。 數據庫是Oracle。
BDE Query使用ODBC連接,但DBExpress SQLDataSet使用Oracle驅動程序。
這有什麼問題?
procedure Test;
var
Query : TQuery; // dbe
SQLDataSet : TSQLDataSet; // dbexpress
begin
Query := TQuery.Create(nil);
Query.DatabaseName := 'DatabaseName';
Query.SQL.Add('update TMPTABLE set STATUS = 1');
Query.ExecSQL; // <-- OK
Query.Free;
SQLDataSet := TSQLDataSet.Create(nil);
SQLDataSet.SQLConnection := SQLConnection;
SQLDataSet.CommandType := ctQuery;
SQLDataSet.CommandText := 'update TMPTABLE set STATUS = 1';
SQLDataSet.ExecSQL; // <-- Freezes here
SQLDataSet.Free;
end;
這些的SQLConnection PARAMS:
DriverUnit=Data.DBXOracle
DriverPackageLoader=TDBXDynalinkDriverLoader,DBXCommonDriver170.bpl
DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxCommonDriver,Version=17.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b
MetaDataPackageLoader=TDBXOracleMetaDataCommandFactory,DbxOracleDriver170.bpl
MetaDataAssemblyLoader=Borland.Data.TDBXOracleMetaDataCommandFactory,Borland.Data.DbxOracleDriver,Version=17.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b
GetDriverFunc=getSQLDriverORACLE
LibraryName=dbxora.dll
LibraryNameOsx=libsqlora.dylib
VendorLib=oci.dll
VendorLibWin64=oci.dll
VendorLibOsx=libociei.dylib
DataBase=Database Name
User_Name=user
Password=password
MaxBlobSize=-1
LocaleCode=0000
IsolationLevel=ReadCommitted
RowsetSize=20
OSAuthentication=False
MultipleTransactions=False
TrimChar=False
BlobSize=-1
ErrorResourceFile=
OS Authentication=False
Multiple Transaction=False
Trim Char=False
Decimal Separator=.
什麼說調試? – Hidden
它凍結。我必須重置調試。你的意思是什麼調試? – pKarelian
你可以通過select檢索記錄,然後做一個'SQLDataSet.Open'?也許你的提供者/驅動程序有問題。 – kobik