[求教]如何把一个AdoQuery数据行返回到一个数组中?

Yothan 2011-03-11 01:34:41
因为工作原因,需要将一个AdoQuery数据集中的行值放到一个一维数组中,并且为了效率不能使用循环赋值。我的程序需要在后续的操作中使用这个一维数组。
我使用AdoQuery.RecordSet.GetRows方法可以讲着一行数据返回到一个二维数组中,但是如何将这个二维数据中的行列值放到一维数组里只能用循环方式?
请教!
以下是我能做到的最后一步,还是必须使用循环将得到的二维数据放到一维数组中。
procedure TForm1.Button3Click(Sender: TObject);
var
a:OleVariant;
i, j:integer;
arrRow: array of array of string;
arrResult: array of string;
begin
with ADOQuery1 do
begin
close;
sql.Text := 'select * from t_FeeExprs';
Open;
end;

SetLength(arrRow, ADOQuery1.RecordCount);
for i := Low(arrRow) to High(arrRow) do
SetLength(arrRow[i], ADOQuery1.FieldCount);

a :=ADOQuery1.Recordset.GetRows(ADOQuery1.RecordCount,0, EmptyParam);
SetLength(arrResult, ADOQuery1.RecordCount);
if Varisarray(a) then
begin
arrRow := a;
for j := 0 to ADOQuery1.FieldCount - 1 do
ShowMessage(arrRow[j][0]);
end;

end;
...全文
180 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yothan 2011-03-15
  • 打赏
  • 举报
回复
无答案,结贴。
Judon 2011-03-15
  • 打赏
  • 举报
回复
说实话,根据楼主的要求,的确没什么好办法。哎。。。
Yothan 2011-03-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kye_jufei 的回复:]
Delphi(Pascal) code
procedure TForm1.Button1Click(Sender: TObject);
var
A: Array of String;//定义动态数组
Index: Integer;//定义数组下标变量
begin

ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('Select B from……
[/Quote]
我不希望用循环。。。
Yothan 2011-03-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bdmh 的回复:]
可以了,就这样
[/Quote]

这样还是得循环,我的数据集有58万条数据, 这就要循环58w*Fieldcount次了。
我希望达到的效果是:
循环58w次,把每行数据放到一个一维数组中。
goodhj 2011-03-11
  • 打赏
  • 举报
回复
那你就自定义一个Record类型,就可以实现用一维数组保存你的数据集
Type
TMyRecord = record
F1: String;
F2: Integer;
F3: String;
...
end;

var
arrDataSet: array of TMyRecord;
kye_jufei 2011-03-11
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
A: Array of String;//定义动态数组
Index: Integer;//定义数组下标变量
begin

ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('Select B from A');
ADOQuery.Open;

Setlength(A,ADOQuery.RecordCount); //设置数组宽度
Index := 0;//初始化下标
ADOQuery.First;
While Not ADOQuery.Eof Do //数据集循环
begin
A[Index] := ADOQuery.FieldByName('B').asString;//数据添加到数组中
Inc(Index);
ADOQuery.Next;
end;
end;
bdmh 2011-03-11
  • 打赏
  • 举报
回复
可以了,就这样

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧