通过Delphi和OLEDB连接问题到IBM Netezza

时间:2013-06-07 11:28:52

标签: delphi oledb ado netezza

任务:连接到IBM Netezza并获取Recordset。

我在Delphi中有下一个代码:

procedure TForm1.Button1Click(Sender: TObject);
var
  LADOQuery: TADOQuery;
  LRecordSet: _Recordset;
  LRecCount : Integer;
begin
  LADOQuery := TADOQuery.Create(nil);
  try
    LADOQuery.Prepared := True;
    LADOQuery.ConnectionString :=
      'Provider=NZOLEDB;Password=password;User ID=admin;Data Source=10.25.11.103;Initial Catalog=test;' +
      'Persist Security Info=True;Port=5480;Logging Level=1;';
//    LADOQuery.ConnectionString :=
//      'Driver={NetezzaSQL};servername=10.25.11.103;port=5480;database=test;username=admin;password=password;';
    LADOQuery.SQL.Text := 'Select * from table_1;';
    LADOQuery.Open; { !------- Error under OLEDB -------! }
    LRecordSet := LADOQuery.Recordset;
    if Assigned(LRecordSet) and (LRecordSet.State = adStateOpen) then
    begin
      LRecCount := LRecordSet.RecordCount;
      ShowMessage(IntToStr(LRecCount));
    end;
    LADOQuery.Close;
  finally
    FreeAndNIl(LADOQuery);
  end;
end;

我的系统中已经有Netezza DB的驱动程序:

  • OLEDB(32x和64x版本) - 产品版本7.0.0.4
  • ODBC(32x和64x版本) - 产品版本7.0.0.4

当我尝试在OLEDB(NZOLEDB)下使用连接设置时,我得到“EOleException错误...”,否则当我使用设置uder ODBC(NetezzaSQL)时,我成功连接并获得正确的结果。

问题:在OLEDB Delphi XE(也在XE4下尝试过)下出现错误的原因是什么?

---------------------------
Debugger Exception Notification
---------------------------
Project Test.exe raised exception class EOleException with message 'Unspecified error'.
---------------------------
Break   Continue   Help   
---------------------------

PS。交叉事实:我可以连接到Netezza DB并通过OLEDB驱动程序在.NET程序下使用相同的连接字符串获取结果:

String sConnectionString = "Provider=NZOLEDB;Password=password;User ID=admin;Data Source=10.25.11.103;Initial Catalog=test;"; 
System.Data.OleDb.OleDbConnection nzconn = new System.Data.OleDb.OleDbConnection(sConnectionString);
System.Data.OleDb.OleDbCommand nzcomm = new System.Data.OleDb.OleDbCommand();

提前谢谢!

0 个答案:

没有答案