表模式为DataTable?

时间:2015-09-24 23:41:40

标签: c# sql .net

我进行了搜索并找到了一些看似相关的答案,但他们并没有真正做到我想要的事情。

给定一个有效的连接字符串和一个表名,我希望获得该表的DataTable。即如果表中有一个名为“Name”的列,我想要设置DataTable,这样我就可以dt["Name"] = "blah";

诀窍是,我不想硬编码那些东西,我想动态地做。

人们告诉你使用SqlConnection.GetSchema,但是这会让你回到一张包含大量内容的表格。

每个人都有像TOP 0 * from the table这样的随机技巧,并从那里获取模式等。

但是有没有办法用主键,唯一索引等来获取表格。即..以最终格式进行批量插入。

1 个答案:

答案 0 :(得分:3)

您可以使用SqlDataAdapter.FillSchema

var connection = @"Your connection string";
var command = "SELECT * FROM Table1";
var dataAdapter = new System.Data.SqlClient.SqlDataAdapter(command, connection);
var dataTable = new DataTable();

dataAdapter.FillSchema(dataTable, SchemaType.Mapped);

通过这种方式,您将拥有一个空的DataTable,其中定义了列和键,可以在dataTable["Name"] = "blah";等代码中使用。