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

一行行取出。

相关推荐
1-1=010 小时前
.NET Core 文件系统
.net·.netcore·1024程序员节
IsITGirl11 小时前
VMware Fusion(Mac)Windows ARM 虚拟机 NAT (vmnet8) 报错解决记录
windows·macos·.net·桥接模式
学以智用1 天前
WinForms / WPF / Blazor 项目模板详解
.net
1-1=01 天前
.NET Core 内存管理
.net·.netcore
comedate1 天前
SMLib 安装与构建指南:wheel、源码构建、三平台差异与 6 个实测坑
安装·踩坑·构建·python 3.12·openusd·smlib
无风听海1 天前
.NET 10之Span技术总结
.net
1-1=01 天前
.NET Core 配置与选项
.net·.netcore·1024程序员节
mudtools1 天前
在飞书 SDK 上用 Microsoft Agent Framework 搭一个能干活的工作搭子
人工智能·ai·.net·飞书·agent
ChaITSimpleLove1 天前
Layout.WatchDog.NET 1.5.0-beta.3 发布:统一全后端雪花 ID 策略,数据库能力矩阵一览
.net·watchdog·日志记录器·节点资源监控看板·.net专属轻量级日志中心