[英]Why does Executereader show empty rows after while(reader.Read()) block?
[英]reader.Read() is always empty…but why?
我有个问题。 所以我有问题,如果查询无法正常工作。 他将永远跳进else路径。 但是在数据库中是一个条目,因此它不是空的...
Jump:
string query = "SELECT * FROM `depositRequests` LIMIT 1";
MySqlCommand cmd = new MySqlCommand(query, connection);
MySqlDataReader reader = cmd.ExecuteReader();
Thread.Sleep(1000);
reader.Read();
Log.Info("Durchlauf: " + i);
if (reader.Read())
{
SteamID SteamAddID = new SteamID(reader.GetString(2));
string authCode = reader.GetString(3);
Log.Info("SteamAddID: " + SteamAddID);
Log.Info("AuthCode: " + authCode);
Bot.log.Success("Add SteamAddID: " + SteamAddID + "AuthCode: " + authCode);
AddFriendForTrade(SteamAddID, authCode);
}
else
{
Bot.log.Warn("No Data found! Waiting for Deposit Request");
Thread.Sleep(60000);
reader.Close();
i++;
goto Jump;
}
那么,为什么他总是在else-path中跳转,尽管数据库中有一个条目?
谢谢您的帮助!
因为您只获得一条记录,所以请在此行的if
语句之前读取它:
Thread.Sleep(1000);
reader.Read(); <---
由于没有第二条记录,因此您对Read
的第二次调用始终返回false 。
您应该删除此行,并在if
语句中调用Read
一次,或存储Read
方法的结果,并在if
使用该变量:
bool isRecordExists = reader.Read();
if(isRecordExists)
{
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.