簡體   English   中英

TSQLConnection.GetFieldNames在64位計算機上不起作用

[英]TSQLConnection.GetFieldNames not working on 64-bit machine

我有用於檢索數據庫表字段名稱的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位計算機上運行時為什么工作方式不同,但是確實為我提供了可行的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM