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_421994781 天前
互联网与 Web 应用简介
.net·.netcore
用户298698530141 天前
C# Word自动化:轻松插入特殊符号,告别手动烦恼!
后端·c#·.net
步步为营DotNet1 天前
深入剖析.NET中Span:零拷贝内存操作的基石
服务器·php·.net
观无1 天前
WPF+OpenCV 实现精准像素距离测量工具(.NET 4.6.1)
人工智能·opencv·.net
专注VB编程开发20年2 天前
c#.NET异步同小,ASYNC,AWAIT,PushFrame ,DOEVENTS
开发语言·.net
步步为营DotNet2 天前
深度解读.NET中的DbContext ChangeTracker:实体状态管理与性能优化
oracle·性能优化·.net
A_nanda3 天前
C#调用Quartz.NET的完整实现。
c#·.net·quartz
1314lay_10073 天前
Vue3 + Element Plus项目和C# .Net 7.0 Core后端API项目发布部署到服务器
服务器·前端·javascript·vue.js·elementui·c#·.net
专注VB编程开发20年3 天前
MC508 PLC支持多线程网络通讯,多客户端连接,要注意不要同时读写(麦格米特PLC)
服务器·网络·windows·.net·plc·mc508·麦格米特