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

一行行取出。

相关推荐
.Net Core 爱好者6 小时前
Redis实践之缓存:设置缓存过期策略
java·redis·缓存·c#·.net
Crazy Struggle10 小时前
.NET 7+Angular 4 轻量级新零售进销存系统
.net·angular·进销存系统
dot.Net安全矩阵10 小时前
.NET内网实战:通过命令行解密Web.config
前端·学习·安全·web安全·矩阵·.net
EdisonZhou11 小时前
大模型应用开发初探 : 通用函数调用Planner
aigc·.net·.net core
时光追逐者12 小时前
分享6个.NET开源的AI和LLM相关项目框架
人工智能·microsoft·ai·c#·.net·.netcore
Java资深爱好者1 天前
VB.NET中如何利用ASP.NET进行Web开发
前端·asp.net·.net
Lingbug1 天前
.Net日志组件之NLog的使用和配置
后端·c#·.net·.netcore
那个那个鱼1 天前
.NET 框架版本年表
开发语言·c#·.net
小乖兽技术1 天前
fo-dicom,第一个基于.NET Standard 2.0 开发的DICOM开源库
.net·fo-dicom
nigture2 天前
.NET全局静态可访问IServiceProvider(支持Blazor)
.net·ioc·di·rougamo