C# SqlDataReader.HasRows始终返回“0”;“真的”;即使结果是空的
在浏览了大量关于C# SqlDataReader.HasRows始终返回“0”;“真的”;即使结果是空的,c#,mysql,asp.net,mysqldatareader,C#,Mysql,Asp.net,Mysqldatareader,在浏览了大量关于SqlDataReader.HasRows现象的主题后,即使结果为空,也总是返回true(特别是当它是关于带有聚合的SQL查询时),我完全沉迷于代码 然而,我的示例非常简单,HasRows返回True,FieldCount返回1,即使没有phpMyAdmin边线 query=“从tlink\u bar\u beer中选择FK\u BarId,其中FK\u BeerId=“+sqlDataReader.GetInt32(0); MySqlConnection sqlConnexio
SqlDataReader.HasRows
现象的主题后,即使结果为空,也总是返回true(特别是当它是关于带有聚合的SQL查询时),我完全沉迷于代码
然而,我的示例非常简单,HasRows
返回True
,FieldCount
返回1
,即使没有phpMyAdmin边线
query=“从tlink\u bar\u beer中选择FK\u BarId,其中FK\u BeerId=“+sqlDataReader.GetInt32(0);
MySqlConnection sqlConnexionList=newmysqlconnection(“server=localhost;database=beerchecking;uid=root;password=;”;
MySqlCommand commandList=新的MySqlCommand(查询,sqlConnexionList);
sqlConnexionList.Open();
int[]巴西德;
使用(MySqlDataReader sqlDataReaderList=commandList.ExecuteReader())
{
if(sqlDataReaderList.HasRows)
{
尝试
{
BarsIds=newint[sqlDataReaderList.FieldCount];
int计数器=0;
if(sqlDataReaderList.Read())
{
while(sqlDataReaderList.Read())
{
int id=sqlDataReaderList.GetInt32(计数器);
BarsIds[计数器]=id;
计数器++;
}
}
}
最后
{
sqlDataReaderList.Close();
}
}
其他的
{
BarsIds=新整数[0];
}
}
sqlConnexionList.Close();
当phpMyAdmin结果中没有类似的行时,您知道如何获取HasRows false吗
谢谢阅读。我更喜欢使用辅助数据表而不是数据阅读器,类似这样的:
DataTable dt = new DataTable();
dt.Load(commandList.ExecuteReader());
if(dt.Rows.Count > 0){
//rows exists
}else{
//no rows
}
直接使用SQL studio运行查询时会发生什么情况?我敢打赌它只返回一行。似乎有点不对劲。该查询是从
sqlDataReader
获取ID构造的,因此我假设该ID存在,因此您有行FieldCount
返回列数,因为查询有一列FK_BarId
所以总是得到1。