首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将firedac tquery结果转换为tstringlist列表

如何将firedac tquery结果转换为tstringlist列表
EN

Stack Overflow用户
提问于 2017-09-04 12:54:55
回答 2查看 845关注 0票数 0

有一个查询:

代码语言:javascript
复制
SELECT id FROM level;

如何获取TQuery结果(多个i的字符串)并转换为TStringList?

EN

回答 2

Stack Overflow用户

发布于 2017-09-04 14:06:51

当您在客户端获取所有元组时,您可以通过这种方式访问内部存储(此时没有为内部存储集合实现枚举器,所以这是您使用它时需要写入的最小值):

代码语言:javascript
复制
var
  Row: Integer;
begin
  for Row := 0 to FDQuery.Table.Rows.Count - 1 do 
    StringList.Add(FDQuery.Table.Rows[Row].GetData(0)); { ← 0 here is the column index }
end;

如果需要操作列名,可以使用另一个GetData方法重载:

代码语言:javascript
复制
var
  Row: Integer;
begin
  for Row := 0 to FDQuery.Table.Rows.Count - 1 do 
    StringList.Add(FDQuery.Table.Rows[Row].GetData('ID')); { ← ID here is the column name }
end;

或者只询问并记住一次列索引:

代码语言:javascript
复制
var
  Col, Row: Integer;
begin
  Col := FDQuery.Table.Columns.ColumnByName('ID').Index; { ← get column index by name }
  for Row := 0 to FDQuery.Table.Rows.Count - 1 do 
    StringList.Add(FDQuery.Table.Rows[Row].GetData(Col));
end;

GetData存储访问的优点是不移动数据集游标,最后它与FireDAC在使用作为访问器时获取数据的方式相同(在本例中,返回的变体只是隐式强制转换)。

票数 4
EN

Stack Overflow用户

发布于 2017-09-04 13:46:08

代码语言:javascript
复制
yourStringList.Clear;
yourQuery.First;
while not yourQuery.Eof do
begin
 yourStringList.Add(yourQuery.FieldByName('id').AsString);
 yourQuery.Next;
end;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46030464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档