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

一行行取出。

相关推荐
SEO-狼术3 小时前
.Net Forms Resize Crack
.net
许泽宇的技术分享3 小时前
Text2Sql.Net架构深度解析:从自然语言到SQL的智能转换之道
sql·架构·.net
追逐时光者14 小时前
一款基于 .NET 开源美观、功能丰富的串口调试工具
.net
瀚高PG实验室15 小时前
外网获取瀚高.NET驱动dll方法和使用案例
.net·瀚高数据库
2501_9262279418 小时前
.Net程序员就业现状以及学习路线图(四)
学习·.net
喵叔哟1 天前
54.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--实现手机邮箱注册
微服务·智能手机·.net
喵叔哟1 天前
52.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--解决客户端调用接口404问题
微服务·架构·.net
tiancao2221 天前
安装3DS MAX 2026后,无法运行,提示缺少.net core的解决方案
.net·.netcore·3dsmax
FL16238631292 天前
Windows Server2012 R2 安装.NET Framework 3.5
.net