将MS-SQL表直接导入System.Data.DataTable是否有简便实现方法?
实现方案
原生.NET 没有提供你示例中DataTable dt_Products = new DataTable(connection, "Products")的构造函数重载,但你可以通过SqlDataAdapter实现完全一致的需求,无需手动编写SqlCommand、遍历SqlDataReader,表的列名、数据类型、自增属性、主键等元数据都会自动识别适配。
基础实现代码
using (SqlConnection connection = new SqlConnection("你的数据库连接字符串")) { // 只需传入查询语句和连接对象,无需手动管理连接开闭、DataReader遍历 SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM dbo.Products", connection); DataTable dt_Products = new DataTable(); // Fill方法会自动打开/关闭连接,同时填充表结构和全量数据 adapter.Fill(dt_Products); }
封装为你想要的简化调用形式
你可以自行封装一个工具方法,实现和你设想的几乎一致的调用逻辑:
public static class DataTableHelper { public static DataTable LoadFromSqlTable(string connectionString, string tableName) { using (SqlConnection conn = new SqlConnection(connectionString)) { SqlDataAdapter adapter = new SqlDataAdapter($"SELECT * FROM [{tableName}]", conn); DataTable result = new DataTable(tableName); adapter.Fill(result); return result; } } }
调用时直接写:
DataTable dt_Products = DataTableHelper.LoadFromSqlTable("你的连接字符串", "Products");
额外说明
如果需要仅加载表结构不加载数据,可以把adapter.Fill(dt)替换为adapter.FillSchema(dt, SchemaType.Source),即可获取包含全部列属性、主键、自增标识的空表。
内容的提问来源于stack exchange,提问作者Dominique
相关产品推荐
相关产品推荐

