TSQLConnection.GetFieldNames无法在64位计算机上运行

时间:2011-08-31 01:10:38

标签: delphi firebird dbexpress wow64 delphi-2005

我使用Delphi 2005代码来检索数据库表字段名称 它在32位计算机(Windows XP,Windows Vista,Windows 7)上没有问题。

但是,在64位计算机(Windows Vista或Windows 7)上运行时,它不会返回任何字段名称。

代码如下所示:

uses  Db, SQLExpr;  

procedure TForm1.ShowFieldNames(SQLConnection: TSQLConnection;  
                                FieldNames: TStringList);  
  var FieldIndex: Integer;  
begin  
  SQLConnection.GetFieldNames('TABLENAME', FieldNames);  
  ListBox.Items.Add('Field Count = ' + IntToStr(FieldNames.Count));  
  for FieldIndex:=0 to FieldNames.Count - 1 do  
    ListBox.Items.Add('FieldName = ' + FieldNames[FieldIndex]);  
  end;  

在32位计算机上,这显示非零计数,并列出字段名称,在64位计算机上显示“Field Count = 0”

当我使用Delphi 2006或Delphi 2007重新编译时,问题就消失了。

(我正在使用Firebird 2.5)

我想解决这个问题而无需将程序升级到更高版本的Delphi。

我还想了解问题出现的原因 - 为什么程序在64位Windows上表现不同。

请你给我任何建议。

1 个答案:

答案 0 :(得分:1)

使用查询:

SELECT RDB$FIELD_NAME FROM RDB$RELATION_FIELDS WHERE RDB$RELATION_NAME='TABLENAME';  

然后修剪返回的结果会给我字段名称,它可以在64位计算机上运行。

这并不能解释为什么程序在64位计算机上运行时的工作方式不同,但它确实为我提供了可行的解决方案。