DataTable.Load(reader)注意事项

对于在C#中操作数据库查询,这样的代码很常见:

csharp 复制代码
using var cmd = ExecuteCommand(sql);
using var reader = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(reader);
...

一般的查询是没问题的,但是如果涉及主键列的查询,这个时候得注意了,如果select 字段有主键字段,并且主键列会存在多行相同值,如:

这时执行完Load你会发现dt只有1行...

解决办法就是不要使用Load,而是使用

csharp 复制代码
while(reader.Read())
...

一行行取出。

相关推荐
公子小六15 小时前
基于.NET的Windows窗体编程之WinForms打印
windows·microsoft·c#·.net·winforms
light blue bird17 小时前
可更新组装工序资源图表功能组件
开发语言·前端·jvm·.net·状态模式
步步为营DotNet17 小时前
深入.NET 11:ASP.NET Core 10 在构建高可用分布式系统的关键技术与实践
asp.net·.net·wpf
步步为营DotNet2 天前
探索.NET 11:.NET Aspire 在云原生微服务治理中的创新实践
微服务·云原生·.net
学以智用2 天前
.NET Core 数据验证(最全实战指南)
后端·.net
无风听海2 天前
.NET 10 Claim 身份体系深度解析
.net
周杰伦fans2 天前
不支持目标框架: C#项目面向不再受支持的.NET Framework4.6.2
开发语言·c#·.net
喵叔哟3 天前
12.【.NET10 实战--孢子记账--产品智能化】--技术选型
.net
步步为营DotNet3 天前
探秘.NET 11:C# 14 特性在后端性能优化中的深度应用
性能优化·c#·.net
唐青枫3 天前
别把登录写散了:C#.NET IdentityServer4 统一认证与 JWT 授权实战
c#·.net