2017-08-23 1 views
-1

Ich habe aktuelle diesen Code für meine C# Windows-Anwendung, wo er Daten aus einer Tabelle in meiner Datenbank sammelt und sammelt den 'NAME' mit 'ID'. Es ist nicht arbeiten alle TippsC# MySQL - MysqlDataReader mit Switch funktioniert nicht :(

private void timer1_Tick(object sender, EventArgs e) 
    { 
     try 
     { 
      con.Open(); 
      for (counter = 0; counter >= 7; counter++) 
      { 
       string sq = "select * from products where ID='" + counter + "'"; 
       cmd = new MySqlCommand(sq, con); 
       mdr = cmd.ExecuteReader(); 

       if (mdr.Read()) 
       { 
        switch (counter) 
        { 
         case 0: 
          Item1Btn.Text = mdr.GetString("NAME"); 
          break; 
         case 1: 
          Item2Btn.Text = mdr.GetString("NAME"); 
          break; 
         case 2: 
          Item3Btn.Text = mdr.GetString("NAME"); 
          break; 
         case 3: 
          Item4Btn.Text = mdr.GetString("NAME"); 
          break; 
         case 4: 
          Item5Btn.Text = mdr.GetString("NAME"); 
          break; 
         case 5: 
          Item6Btn.Text = mdr.GetString("NAME"); 
          break; 
         case 6: 
          Item7Btn.Text = mdr.GetString("NAME"); 
          break; 
        } 
        counter = 0; 
       } 
      } 
     } 
     catch(MySqlException rr) 
     { 
      MessageBox.Show("Error Occured: " + rr.ToString()); 
     } 
     con.Close(); 
    } 

Nichts wird aus irgendeinem Grund in diesem Code arbeiten: ((((

+0

Welches Ding funktioniert nicht? Geben Sie Fehlerdetails in Ihre Frage ein. 'GetString (" NAME ")' möglich, die Ausführung zu unterbrechen, wenn die Spalte 'DBNull.Value' enthält, also pass auf. –

+0

@mmushtaq: Das sollte in Ordnung sein –

+0

Haben Sie Werte in der Tabelle mit den IDs 1-7? –

Antwort

0

die Sie interessieren im Code

Item1Btn.Text = mdr["NAME"]; 
+0

Sorry, habe das Problem gefunden, ich hatte ein> = also die Operation lief nicht, danke für die Hilfe –

0

Es gibt mehrere Fehler zu beginnen. du brauchst concat die Anzahl als: String sq = "Wählen Sie * von Produkten mit ID = '" + counter.ToString() + "'";

Zweitens die angewandte Logik ineffizient ist,

Sie sollten die SQL-Anweisung wie folgt geschrieben haben: Select ID, Name von Produkten, bei denen ID < = 7

Post this den Leser nutzen können und in switch case statement Sie können die ID des Datarows anstelle des Zählers verwenden.

Das letzte, was Sie haben, haben Sie Counter = 0 in den IF-Block gesetzt.

Hoffe, das ist eine Hilfe.