gpt4 book ai didi

delphi - TSQLConnection.GetFieldNames在64位计算机上不起作用

转载 作者:行者123 更新时间:2023-12-03 18:43:16 25 4
gpt4 key购买 nike

我有用于检索数据库表字段名称的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上的行为会有所不同。

请给我任何建议。

最佳答案

使用查询:

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


然后修剪返回的结果将为我提供字段名称,并且可以在64位计算机上使用。

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

关于delphi - TSQLConnection.GetFieldNames在64位计算机上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7251569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com