繁体   English   中英

reader.Read()始终为空,但是为什么呢?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM