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

一行行取出。

相关推荐
2601_961194029 小时前
27考研刘晓艳单词pdf
linux·sql·ubuntu·华为·pdf·.net
rockey62710 小时前
AScript之事件处理脚本
c#·.net·script·动态脚本
light blue bird19 小时前
工序 BOM 协同系统架构多模块组件
数据库·信息可视化·.net
学以智用20 小时前
.NET Core 序列化 **超清晰完整版教程**
后端·.net
周杰伦fans20 小时前
AutoCAD .NET 二次开发:深入理解 ObjectId = 0 与 ObjectId.Null
数据库·oracle·.net
半亩码田21 小时前
【.NET新特性·第4篇】.NET Aspire 入门:云原生开发新姿势
云原生·.net
步步为营DotNet1 天前
洞悉.NET 11:ASP.NET Core 10 在构建实时协作 Web 应用的技术实践
前端·asp.net·.net
2601_961194021 天前
27考研刘晓燕资源
linux·sql·ubuntu·华为·pdf·.net
light blue bird2 天前
支组汇总主子节点工序路径图表
前端·jvm·.net·桌面端·gdi绘图
linmoo19862 天前
Java踩坑系列之二:ThreadLocal内存泄漏
java·内存泄漏·threadlocal·踩坑