Delphi:如何将表(mysql)的内容加载到Float的数组[1..50]中?

时间:2014-04-14 20:29:48

标签: mysql arrays delphi mydac

我在使用MyDAC的数据源模块中有一个表。我想将表的内容,50行的列数加载到Float的数组[1..50]中。我怎么能这样做?

这是我的数据模块单元的代码:

unit Unit2;

interface

uses
  System.SysUtils, System.Classes, Data.DB, DBAccess, MyAccess, MemDS;

type
  TDataModule2 = class(TDataModule)
    MyConnection1: TMyConnection;
    MyQuery1: TMyQuery;
    MyQuery1Months: TFloatField;
    MyQuery1Qob: TFloatField;
    MyQuery1Qcalc: TFloatField;
    MyDataSource1: TMyDataSource;
    MyTable1: TMyTable;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  DataModule2: TDataModule2;

implementation

{%CLASSGROUP 'Vcl.Controls.TControl'}

{$R *.dfm}

end.

1 个答案:

答案 0 :(得分:2)

看来你有一个包含3列的表,每列都是类型为Float的。 (虽然我可以帮助但不知道为什么一个名为" months"的列会包含浮点数据。)你不会将这些数据加载到50个浮点数组中;您将其加载到包含3个字段的50个记录或对象的数组中。

但是,让我们说你只想加载其中一个字段的值。这将是这样的:

i := 1; //index variable into the array
myQuery1.Open; //run the database query
while not myQuery1.EOF do //loop until we reach the end of the dataset
begin
   myArray[i] := MyQuery1Qcalc.value; //read the field value to the array
   myQuery1.Next; //next record
   inc(i); //next array index
end;

请注意,如果此结果集包含的记录数不同于预期的50,那么您将遇到问题。在调用RecordCount之后,最好使用动态数组并将其长度设置为等于数据集的Open属性。但这是加载数据的基本模式:打开数据集,(或者如果它已经打开则调用First),然后从字段中读取值并调用Next直到你到达EOF(文件结束,在这种情况下实际上意味着结束记录集。)