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

一行行取出。

相关推荐
wwyyxx2611 小时前
Linux 下 .NET 程序 CPU 异常占用排查记录
linux·.net·调试
回忆2012初秋12 小时前
.NET 时序数据操作实战:Apache IoTDB连接与 CRUD 完全指南
.net·apache·iotdb
回忆2012初秋13 小时前
.NET 实战:Redis 缓存穿透、击穿与雪崩的原理剖析与解决方案
redis·缓存·.net
武藤一雄1 天前
19个核心算法(C#版)
数据结构·windows·算法·c#·排序算法·.net·.netcore
旡心-小小康2 天前
.NET WebSocket Socket
websocket·网络协议·.net
wenha2 天前
踩坑记录:UTF-8、UTF-8-BOM 与 GB2312 读取的乱码真相
utf-8·.net·编码·utf-8-bom
江沉晚呤时2 天前
C# 整型溢出处理机制:checked 与 unchecked 上下文解析
c#·.net
余衫马2 天前
在 Windows 服务中托管 ASP.NET Core Web API (.net6)
运维·windows·后端·asp.net·.net
步步为营DotNet2 天前
LM-Kit.NET:.NET 生态一站式本地 AI 开发平台
人工智能·.net
步步为营DotNet2 天前
.NET 实战 LlamaSharp:本地运行开源大模型
.net