我进行了搜索并找到了一些看似相关的答案,但他们并没有真正做到我想要的事情。
给定一个有效的连接字符串和一个表名,我希望获得该表的DataTable
。即如果表中有一个名为“Name”的列,我想要设置DataTable,这样我就可以dt["Name"] = "blah"
;
诀窍是,我不想硬编码那些东西,我想动态地做。
人们告诉你使用SqlConnection.GetSchema
,但是这会让你回到一张包含大量内容的表格。
每个人都有像TOP 0 * from the table
这样的随机技巧,并从那里获取模式等。
但是有没有办法用主键,唯一索引等来获取表格。即..以最终格式进行批量插入。
答案 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";
等代码中使用。