我使用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上表现不同。
请你给我任何建议。
答案 0 :(得分:1)
使用查询:
SELECT RDB$FIELD_NAME FROM RDB$RELATION_FIELDS WHERE RDB$RELATION_NAME='TABLENAME';
然后修剪返回的结果会给我字段名称,它可以在64位计算机上运行。
这并不能解释为什么程序在64位计算机上运行时的工作方式不同,但它确实为我提供了可行的解决方案。