如何从 MSSQL 连接查询中的字段中获取表名? (mysql_field_table 等效)

Posted

技术标签:

【中文标题】如何从 MSSQL 连接查询中的字段中获取表名? (mysql_field_table 等效)【英文标题】:How to get the table name from a field in a join query with MSSQL? (mysql_field_table equivalent) 【发布时间】:2013-03-04 03:12:21 【问题描述】:

我正在使用ADO 在 Delphi 中做一个查询管理器,我需要知道查询将返回的所有字段,不管它们有多复杂和有多少连接。我想调用一个函数,该函数返回给我,将在特定查询中返回的所有字段,以及字段信息,例如表这个字段来自什么。

在带有phpmysql中,我有命令mysql_field_table,在这个命令中我传递结果对象和字段索引,这个命令为我返回表名。

嗯,这就是我的梦想,从查询中的字段索引中获取表名,例如:

SELECT * FROM TableOne Left Join Table2 ON Table2.MasterField = Table1.KeyField

【问题讨论】:

【参考方案1】:

您可以使用TADODataSet 来获取Recordset,迭代Fields 集合,并获得如下表/字段名称:

for I := 0 to ADODataSet1.Recordset.Fields.Count - 1 do
begin
  TableName := ADODataSet1.Recordset.Fields[i].Properties['BASETABLENAME'].Value;
  FieldName := ADODataSet1.Recordset.Fields[i].Properties['BASECOLUMNNAME'].Value;
end;

【讨论】:

你不知道你帮了我多少。非常非常非常感谢……我非常感谢……你是最棒的!!!对不起,但我没有投票的声誉,但感觉是你自己投票的! +1 不知道这是可能的。此属性是否适用于所有数据库类型? @whosrdaddy,我将它与 MSSQL 和 MS-ACCESS 一起使用。它取决于提供者(除其他外)。看一个相关资料:When Table Name Is Available Using ADO, RDO, DAO

以上是关于如何从 MSSQL 连接查询中的字段中获取表名? (mysql_field_table 等效)的主要内容,如果未能解决你的问题,请参考以下文章

Mssql根据表名获取字段

asp读取MSSQL数据库中某个字段的值

导出mssql数据库中的表、字段和类型为SQL语句

sql语句从一张表查询一个字段值插入另一个表中

如何通过JDBC连接Oracle数据库获取表名列表

如何从 SQL 查询中获取表名?