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

一行行取出。

相关推荐
请叫我阿杰19 小时前
Ubuntu系统安装.NET SDK 7.0
数据库·ubuntu·.net
追逐时光者21 小时前
小伙伴们学习 C#/.NET 相关技术栈的学习心得和路线
后端·.net
Full Stack Developme1 天前
java.net.http 包详解
java·http·.net
喵叔哟1 天前
64.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--预算报表
微服务·架构·.net
z2014z1 天前
LitJSON 轻量级、高效易用的 .NET JSON 库 深度解析与实战指南
json·.net
生财1 天前
.NET 10发布和它的新增功能
.net
q***56381 天前
深入浅出 SQLSugar:快速掌握高效 .NET ORM 框架
.net
Crazy Struggle1 天前
告别人工干预!C# 轻量级上位机自动联动 MES 与视觉检测
c#·.net·mes
小码编匠1 天前
.NET 10 性能突破:持续优化才是质变关键
后端·c#·.net