MySQL: использование синтаксиса в C # - PullRequest
1 голос
/ 31 марта 2010

Я использую в C # MYsql. У меня есть запрос, который работает, если я запускаю на MySql Workbench, но в C # он не возвращает никакого значения, также не дает муравейную ошибку. имя таблицы databaseName.tableName, но в C # я думаю, что в этом нет необходимости. Это часть запроса, которая ничего не возвращает.

РЕДАКТИРОВАТЬ: РЕШЕНО

"(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)))

А вот все коды, которые выполняются при нажатии пользователем кнопки.

 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 :)");

    }

1 Ответ

0 голосов
/ 31 марта 2010

С долгими экспериментами)) Я нашел свои ошибки. MySqlParameter param1 имеет значение для Student_Name, и я также добавил Student_Surname, но в моей таблице было только Student_Name, и из-за этого они не совпадают. Также param4.ParameterName = "?Time"; было возвращено системное время, но с другим форматом времени. Я изменил его на param4.Value=DateTime.Now.ToString("hh:mm"); Алсон Я понял, что вместо использования Lesson_Time <= (?Time), используя Lesson_Time <= ('?Time') решенную проблему. Я думаю, что в своей таблице я определил время уроков как строку и ('? Time') возвращает строку.

...