使用 Delphi (Dbexpress) 获取列名

Ker*_*mia 0 sql delphi dbexpress

我正在使用这个 sql 命令来获取列名:

select COLUMN_NAME from 
INFORMATION_SCHEMA.COLUMNS 
where TABLE_NAME = 'MyTableName'
Run Code Online (Sandbox Code Playgroud)

但我不知道如何使用执行的 SQL 命令结果!

例如,这种方式无法将列名提取为字符串值,并且我收到此错误 = 不支持操作:

  for i := 1 to Qry1.RecordCount do
  begin

  end;
Run Code Online (Sandbox Code Playgroud)

Blo*_*ard 5

像这样的东西适用于 TADOQuery(不确定它是否与 dbExpress 不同):

Qry1.Open;
while not Qry1.Eof do begin
    // do whatever with Qry1.Fields[0].AsString here
    Qry1.Next;
end;
Qry1.Close;
Run Code Online (Sandbox Code Playgroud)


Rob*_*ell 5

另一种方法是查询表本身以获取空数据集,然后遍历该数据集中的字段。

像这样的查询将返回没有记录的表结构:

Qry1.SQL.Text := 'SELECT * FROM MyTableName WHERE 1<>1';
Qry1.Open;
Run Code Online (Sandbox Code Playgroud)

像这样的循环将遍历每个字段

for I := 0 to Qry1.FieldCount-1 do
begin
  X := Qry1.Fields[I].FieldName;
  // and do whatever you want with X
end;
Run Code Online (Sandbox Code Playgroud)