如何在SqlDataReader中处理多行方案?

问题描述 投票:0回答:1

我有一个SQL查询,其中supposed仅返回业务数据库中的ONE行。基于此,我编写了以下sql script以从结果集中获取数据。

string query = @"select 
ProdMaster.data_Id Id,
ProdMaster.data_name Name,
ProdMaster.data_countryname CountryName
from RM.Db
order by ProdMaster.data.FromDate desc"

SqlCommand command = new SqlCommand(query, conn);
using (SqlDataReader reader = command.ExecuteReader())
{
 if (reader.Read()) 
   {                            
      countryname = reader["CountryName"].ToString(); 
   }
}

但是数据库中存在一些数据问题,有时它返回多行。

我们如何检查count行?如果行多于一个,我们要返回一个自定义异常。

  • 我不想在查询中使用COUNT(*)。
  • 我们无法控制RM.Db数据库-可能有数据问题(第三方)
c# sql database
1个回答
1
投票

您可以改用SqlDataAdapter,并将表中的内容填充到数据集中。数据集内部将有一个表,您可以像这样对行进行计数-ds.Tables[0].Rows.Count

可能存在与Datareader相关的问题,因为它是数据流,并且db在读取时可能会有更改。在此线程上可以找到关于它的更详尽的讨论-How to get number of rows using SqlDataReader in C#

© www.soinside.com 2019 - 2024. All rights reserved.