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

一行行取出。

相关推荐
小满Autumn11 小时前
CommunityToolkit.Mvvm 架构笔记:现代 MVVM、源生成器与工程化实践
笔记·架构·c#·.net·wpf·mvvm
token-go11 小时前
Means:基于 .NET 10 打造的开源自部署 S3 兼容对象存储服务
低代码·.net·rxjava
webmote3313 小时前
从零打造虚拟小智:用浏览器模拟 IoT 设备的实践之路
aigc·.net·嵌入式
步步为营DotNet21 小时前
探索.NET 11:Blazor 在跨平台客户端应用开发的进阶实践
前端·asp.net·.net
2601_961194021 天前
27考研刘晓艳单词pdf
linux·sql·ubuntu·华为·pdf·.net
rockey6271 天前
AScript之事件处理脚本
c#·.net·script·动态脚本
light blue bird2 天前
工序 BOM 协同系统架构多模块组件
数据库·信息可视化·.net
学以智用2 天前
.NET Core 序列化 **超清晰完整版教程**
后端·.net
周杰伦fans2 天前
AutoCAD .NET 二次开发:深入理解 ObjectId = 0 与 ObjectId.Null
数据库·oracle·.net
半亩码田2 天前
【.NET新特性·第4篇】.NET Aspire 入门:云原生开发新姿势
云原生·.net