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

一行行取出。

相关推荐
黑洞视界14 小时前
高性能进程内队列 BufferQueue 1.0 版本发布
.net
fogota20 小时前
【AI】C# .NET8 WPF 第三方DLL引用配置(编译不丢失、不自动删除)
c#·.net·wpf·dll
rockey6272 天前
基于AScript的JavaScript脚本语言发布啦
javascript·c#·.net·js·script
Java面试题总结2 天前
LeetCode 93.复原IP地址
算法·leetcode·职场和发展·.net
慧都小妮子2 天前
SciChart WPF v9.0 更新详解:矢量场图表、堆叠箱线图与 MVVM 轴同步来了
c#·.net·wpf·数据可视化·图表控件·图表
海盗12343 天前
.NET编码规范05-Roslyn分析器与StyleCop
.net