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

一行行取出。

相关推荐
weixin_4219947815 小时前
认识数据 - 变量与数据类型
c#·.net·.netcore
mudtools15 小时前
深入理解飞书 Webhook 签名验证:一次踩坑到填坑的完整记录
网络·c#·.net·飞书
工业甲酰苯胺15 小时前
如何一步步将 ASP.NET MVC 升级为.NET
asp.net·mvc·.net
闻缺陷则喜何志丹16 小时前
【.NetAPI]统计标注的值、上公差、下公差
数学·.net·cad·netapi
一念一花一世界16 小时前
Arbess项目实战 - 基于GitLab搭建.net项目自动化流水线
ci/cd·gitlab·.net·arbess
Eiceblue16 小时前
【.NET 开发】通过 C# 实现 Excel 转 JSON
c#·.net·excel
fs哆哆16 小时前
在VB.NET和VBA教程-操作Excel单元格的三个核心问题
ui·.net·excel
王维志1 天前
使用C#控制台批量删除 Unity目录里的 .meta文件
unity·c#·.net
de之梦-御风1 天前
【C#.Net】C#开发的未来前景
开发语言·c#·.net
de之梦-御风1 天前
【C#.Net】C#在工业领域的具体应用场景
开发语言·c#·.net