2014-04-19 4 views
-1

J'ai un problème. J'ai donc le problème, que l'if-query ne fonctionne pas. il sautera toujours dans l'autre chemin. Mais dans la base de données est une entrée, il nest pas vide ...reader.Read() est toujours vide ... mais pourquoi?

 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; 
      } 

Alors pourquoi il saute toujours dans le chemin d'autre bien qu'il y ait une entrée dans la base de données?

Nous vous remercions de votre aide!

+0

Quel genre de problème que vous essayez de résoudre avec ' Thread.Sleep (1000); '? [** 'goto Jump' ??? **] (http://xkcd.com/292/) Il existe de meilleures alternatives:' while (true) {...; si (condition) pause; ...} 'ou' while (true) {...; si (condition) retour; ...} '. –

Répondre

4

Parce que vous obtenez seulement un enregistrement, puis le lire avant la déclaration if sur cette ligne:

Thread.Sleep(1000); 
reader.Read(); <--- 

Comme il n'y a pas de deuxième enregistrement, votre deuxième appel à Read retourne toujours faux.

Vous devez supprimer cette ligne et appeler Read une seule fois dans votre if déclaration ou stocker le résultat de la méthode Read et utiliser cette variable dans le if:

bool isRecordExists = reader.Read(); 
if(isRecordExists) 
{ 
    ... 
} 
+0

OMG! Merci ... je ne l'ai pas vu! – InDerectif

Questions connexes