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

一行行取出。

相关推荐
RD_daoyi16 小时前
Google核心算法不再通知!全年持续滚动更新
大数据·服务器·前端·网络·搜索引擎·.net
他们叫我 悦儿遥遥雨19 小时前
.NET 8 Web开发入门(六):Blazor 全栈开发——告别 JavaScript 焦虑
前端·javascript·.net
深爱水瓶 血影S狂风19 小时前
Linux.NET学习手记(2)
linux·学习·.net
贾天佑忆月 迷失的昵19 小时前
.NET Web开发技术简单整理
前端·.net
杰佛史彦明 本王是暴君20 小时前
.NET PDB文件到底是什么?
.net
界面开发小八哥2 天前
界面控件DevExpress Office & PDF File v26.1新版亮点 - 全新的条码生成API
pdf·.net·devexpress·ui开发·文档控件·.net 10
de之梦-御风2 天前
【工业自动化平台】 工程设计-项目分层目录设计(1)
自动化·.net
脚踏实地皮皮晨3 天前
003006001_WrapPanel控件
开发语言·c#·.net·wpf·visual studio
神罚天下ET3 天前
.NET 新增功能系列文章——C# 中的新增功能
开发语言·c#·.net
脚踏实地皮皮晨3 天前
003004002_UniformGrid控件的使用方法
开发语言·c#·.net·wpf·visual studio