我有一个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
行?如果行多于一个,我们要返回一个自定义异常。
注:
RM.Db
数据库-可能有数据问题(第三方)您可以改用SqlDataAdapter
,并将表中的内容填充到数据集中。数据集内部将有一个表,您可以像这样对行进行计数-ds.Tables[0].Rows.Count
可能存在与Datareader相关的问题,因为它是数据流,并且db在读取时可能会有更改。在此线程上可以找到关于它的更详尽的讨论-How to get number of rows using SqlDataReader in C#