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())
...

一行行取出。

相关推荐
望晨空忧7 小时前
Avalonia 制作复杂布局动画
.net·avalonia
唐青枫12 小时前
C#.NET YARP 服务发现实战:接入 Consul 和 Kubernetes 动态发现后端服务
c#·.net
largecode12 小时前
座机号码认证如何操作?申请热线实名名片,树立统一官方客服形象
linux·sql·华为·c#·.net·wpf·harmonyos
小满Autumn15 小时前
WPF 入门:XAML 语法、布局与数据绑定
microsoft·c#·.net·wpf
光泽雨16 小时前
ADO.NET 进阶知识与实战坑位深度解析
性能优化·架构·.net
步步为营DotNet17 小时前
解密.NET 11:C# 14 在客户端响应式编程的突破与实践
microsoft·c#·.net
小满Autumn19 小时前
WPF 进阶:样式、触发器与控件模板
c#·.net·wpf
步步为营DotNet2 天前
深挖.NET 11:.NET Aspire 在云原生应用韧性架构构建的探索与实践
云原生·架构·.net
rick9772 天前
C# ModuleInitializer:程序集级别的初始化黑科技
.net
公子小六3 天前
基于.NET的Windows窗体编程之WinForms打印
windows·microsoft·c#·.net·winforms