gpt4 book ai didi

c# - SqlDataReader.HasRows 始终返回 "true",即使结果为空

转载 作者:行者123 更新时间:2023-11-30 21:32:45 25 4
gpt4 key购买 nike

在浏览了很多关于 SqlDataReader.HasRows 现象的主题之后,即使结果为空,它也总是返回 true(尤其是当它是关于带有聚合的 SQL 查询时),我完全没有理会我的想法代码

但是我的示例非常简单,HasRows 返回 TrueFieldCount 返回 1,即使没有phpMyAdmin 边线。

query = "SELECT FK_BarId FROM tlink_bar_beer WHERE FK_BeerId = " + sqlDataReader.GetInt32(0);

MySqlConnection sqlConnexionList = new MySqlConnection("server=localhost;database=beerchecking;uid=root;password=;");
MySqlCommand commandList = new MySqlCommand(query, sqlConnexionList);
sqlConnexionList.Open();

int[] BarsIds;
using (MySqlDataReader sqlDataReaderList = commandList.ExecuteReader())
{
if (sqlDataReaderList.HasRows)
{
try
{
BarsIds = new int[sqlDataReaderList.FieldCount];
int counter = 0;

if (sqlDataReaderList.Read())
{
while (sqlDataReaderList.Read())
{
int id = sqlDataReaderList.GetInt32(counter);
BarsIds[counter] = id;
counter++;
}
}
}
finally
{
sqlDataReaderList.Close();
}
}
else
{
BarsIds = new int[0];
}
}

sqlConnexionList.Close();

你知道当没有像 phpMyAdmin 结果中那样的行时如何让 HasRows 为假吗?

感谢阅读。

最佳答案

我更喜欢使用辅助 DataTable 而不是 DataReader,如下所示:

DataTable dt = new DataTable();
dt.Load(commandList.ExecuteReader());

if(dt.Rows.Count > 0){

//rows exists
}else{

//no rows
}

关于c# - SqlDataReader.HasRows 始终返回 "true",即使结果为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55395040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com