1

我目前需要从 c# 中的 sql 语句确定表层次结构。例如,考虑以下 sql 语句:

Select Table1.*, Table2.* from Table1 
left join table2 on Table1.parentCol = Table2.childCol

这可能会返回 7 列,Table1 为 3,table2 为 4。我需要知道列名,理想情况下(尽管不是强制性的)它们的类型。

我无法控制将使用什么 SQL 语句,因为这是用户输入的字段。在 C# 中,打开连接并使用该语句创建 SqlCommand 是一项非常基本的任务。如果需要,我可以自由地将 SQL 运行到 SqlDataReader 或任何其他 System.Data.SqlClient 类中,但是我找不到任何可以返回列而不是实际列值的组合。

有人能帮忙吗?

致以真诚的感谢和诚挚的问候

4

2 回答 2

2

你不能做你所要求的(很容易)。

更重要的是,不要让用户输入任意 TSQL(你会在某些时候后悔......)。

相反,创建一个允许输入各种参数的“搜索”表单,并在连接所有所需表/列的视图上使用参数化查询。

于 2011-05-16T00:09:37.433 回答
0

没有直接的方法。您需要从 sql 查询中解析所有表的名称。

完成此操作后,您需要在Information_Schema上编写一些查询来获取所需的原始数据。

如果您在 SQL Server 上,您可能需要使用目录视图

前任-

Select * from sys.tables where [Name] = 'MyTable'
于 2011-05-16T00:17:04.530 回答