我当前要求从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类中,但是我找不到任何会返回列的组合,而不是实际的列值。
有人能帮忙吗?
非常感谢和最好的问候
答案 0 :(得分:2)
你不能(轻松地)做你想要的事。
更重要的是,不要让用户输入任意TSQL(你会在某些时候后悔...)。
相反,创建一个“搜索”表单,允许输入各种参数并将参数化查询用于连接所需的所有表/列的视图。
答案 1 :(得分:0)
没有直接的方法。您需要从sql查询中解析所有表的名称。
完成后,您需要在Information_Schema上写几个查询,以获取您要查找的内容的原始数据。
如果您使用的是SQL Server,则可能需要使用Catalog View
前 -
Select * from sys.tables where [Name] = 'MyTable'