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

一行行取出。

相关推荐
唐青枫11 小时前
我用 C# 开发了一款电子发票自动整理工具
c#·.net
我是唐青枫11 小时前
我用 C# 开发了一款电子发票自动整理工具
c#·.net
唐青枫12 小时前
别把 WPF 写成一个 MainWindow:C#.NET Prism 模块化开发详解
c#·.net
小羊没烦恼!6 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
_Jonas6 天前
.net framework开发环境正式环境配置文件的切换
.net·wpf
Y3815326628 天前
C# 调用谷歌搜索 API:HttpClient 与 System.Text.Json 实战
搜索引擎·.net
qq_410194298 天前
.NET 8.0 下基于 PaddleOCRSharp 的离线文字识别落地指南
算法·.net
李小白杂货铺8 天前
从 macOS 免密 SSH 到 Windows 10 完整配置指南
windows·win10·openssh·踩坑·ssh服务器·免密连接·安装和配置
那人如此可好9 天前
MongoDB常用命令大全
mongodb·db
唐青枫10 天前
别急着拆服务:C#.NET 微服务架构从边界设计到实战
c#·.net