2010-03-30 8 views
1

J'utilise en C# MYsql. J'ai une requête qui fonctionne si je cours sur MySQL Workbench, mais en C# il ne retourne aucune valeur ne donne pas non plus d'erreur ant.Il en existe une seule différente en utilisant Mysql j'utilise avant le nom de la table databaseName.tableName, mais en C# je pense que ce n'est pas nécessaire. Cela fait partie de la requête qui ne retourne rien.mySQL: syntaxe en utilisant en C#

EDIT: RESOUDRE

"(select Lesson_Name from schedule where Group_NO = (select Group_NO from sinif inner join student ON sinif.Group_ID=student.Group_ID where Student_Name=(?Student))"+ 
      " And Day_Name =(select Day_Name from day inner join date ON day.Day_ID=date.DayName where Date=(?Date))" + 
      "And Lesson_Time= (select Lesson_Time from clock where Lesson_Time <= (?Time)order by Lesson_Time DESC limit 0, 1) " + 
      " And Week_NO = (select Week_NO from week inner join date ON week.Week_ID=date.Week_ID where Date=(?Date))) 

Et ici tous les codes qui exécute lorsque le bouton de clic de l'utilisateur.

private void check_B_Click(object sender, EventArgs e) 
    { 

     connection.Open(); 

     for (int i = 0; i < existingStudents.Count; i++) 
     { 
      MySqlCommand cmd1 = new MySqlCommand("select Student_Name,Student_Surname,Student_MacAddress from student ", connection); 
      MySqlCommand cmd2 = new MySqlCommand("insert into check_list (Student,Mac_Address,Date,Time,Lesson_Name)"+ 
      "values((?Student),(?MacAddress),(?Date),(?Time),"+ 
      "(select Lesson_Name from schedule where Group_NO = (select Group_NO from sinif inner join student ON sinif.Group_ID=student.Group_ID where Student_Name=(?Student))"+ 
      " And Day_Name =(select Day_Name from day inner join date ON day.Day_ID=date.DayName where Date=(?Date))" + 
      "And Lesson_Time= (select Lesson_Time from clock where Lesson_Time <= (?Time)order by Lesson_Time DESC limit 0, 1) " + 
      " And Week_NO = (select Week_NO from week inner join date ON week.Week_ID=date.Week_ID where Date=(?Date))))", connection); 

      MySqlParameter param1 = new MySqlParameter(); 
      param1.ParameterName = "?Student"; 
      reader = cmd1.ExecuteReader(); 
      if (reader.HasRows) 
       while (reader.Read()) 
       { 
        if (reader["Student_MacAddress"].ToString() == existingStudentsMac[i].ToString()) 
         param1.Value = reader["Student_Name" ]+" "+reader["Student_Surname"]; 
       } 

      reader.Close(); 

      MySqlParameter param2 = new MySqlParameter(); 
      param2.ParameterName = "?MacAddress"; 
      param2.Value = existingStudentsMac[i]; 

      MySqlParameter param3 = new MySqlParameter(); 
      param3.ParameterName = "?Date"; 
      param3.Value = DateTime.Today.Date; 

      MySqlParameter param4 = new MySqlParameter(); 
      param4.ParameterName = "?Time"; 
      param4.Value = DateTime.Now.ToString("HH:mm"); 


      cmd2.Parameters.Add(param1); 
      cmd2.Parameters.Add(param2); 
      cmd2.Parameters.Add(param3); 
      cmd2.Parameters.Add(param4); 

      cmd2.ExecuteNonQuery(); 

     } 


     connection.Close(); 
     MessageBox.Show("Sucsess :)"); 

    } 

Répondre

0

Avec une longue expérience)) Je trouve mon mistakes.MySqlParameter param1 a une valeur pour nom_etudiant et j'ai aussi ajouté Student_Surname mais dans ma table il n'y avait que nom_etudiant et de ce qu'ils ne correspondance. Alson j'ai reconnu que au lieu d'utiliser Lesson_Time <= (?Time) en utilisant Lesson_Time <= ('?Time') a résolu le problème. Je pense que dans mon tableau j'ai défini l'heure des leçons comme une chaîne et ('? Time ') retourne la chaîne.