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

一行行取出。

相关推荐
唐青枫16 小时前
线程不是越多越快:C#.NET Thread 生命周期、同步与后台工作线程实战
c#·.net
唐青枫2 天前
别只会反射:C#.NET Emit 动态生成代码实战详解
c#·.net
Caco_D2 天前
一行代码抓遍全网 20 个热榜!Aneiang.Pa 4.0 发布 — 极简 .NET 爬虫库
爬虫·.net
咕白m6252 天前
.NET 环境下 Word 超链接批量提取方案
c#·.net
小码编匠2 天前
C# 工控上位机必备:数据转换工具类与十个核心模块
后端·c#·.net
唐青枫4 天前
别再乱用 StartNew:C#.NET TaskFactory 任务调度实战详解
c#·.net
2601_962072558 天前
李梦娇常识4600问|题库|打印版
sql·华为od·华为·c#·华为云·.net·harmonyos
步步为营DotNet8 天前
基于.NET Aspire 实现云原生应用的高效监控与可观测性
云原生·.net·wpf