2016-01-18 2 views
1

Я создаю приложение формы Windows, которое автоматически создает расписание. У меня возникла проблема с записью запроса, когда пользователь выбирает семестр из выпадающего списка (от 1 до 8), а затем что я должен писать в запросе? Мой код ниже.C# query для combobox selected text

private void button_generate_Click(object sender, EventArgs e) 
{ 
    SqlCommand com; 
    SqlConnection con = new SqlConnection("Data Source=MAJOR-DYNASTI;Initial Catalog=ESS;Integrated Security=True"); 
    con.Open(); 
    string a = comboBox_semester.SelectedText; 
    string str = "SELECT CourseName, TeacherName, RoomName FROM Course_teacher, RoomInfo where Semester= ORDER BY NEWID(); "; 
    com = new SqlCommand(str, con); 
    SqlDataReader reader = com.ExecuteReader(); 
    if (reader.HasRows) 
    { 

     Random random = new Random(); 
     var labels = new Label[] { label1, label2, label3, label4, label5, label6, label7, label8,label9,label10,label11,label12,label13,label14,label15,label16, 
            label17,label18,label19,label20,label21,label22,label23,label24,label25,label26,label27,label28,label29,label30,label31, 
            label32,label33,label34,label35,label36,label37,label38,label39,label40,label41,label42,label43,label44,label45,label46,label47,label48, 
            label49,label50}; 
     label1.Text = ""; label2.Text = ""; label3.Text = ""; label4.Text = ""; label5.Text = ""; label6.Text = ""; 
     label7.Text = "";label8.Text = "";label9.Text = "";label10.Text = "";label11.Text = "";label12.Text = "";label13.Text = "";label14.Text = "";label15.Text = "";label16.Text = ""; 
            label17.Text = "";label18.Text = "";label19.Text = "";label20.Text = "";label21.Text = "";label22.Text = "";label23.Text = "";label24.Text = "";label25.Text = "";label26.Text = "";label27.Text = "";label28.Text = "";label29.Text = "";label30.Text = "";label31.Text = ""; 
            label32.Text = ""; label33.Text = ""; label34.Text = ""; label35.Text = ""; label36.Text = ""; label37.Text = ""; label38.Text = ""; label39.Text = ""; label40.Text = ""; label41.Text = ""; label42.Text = ""; label43.Text = ""; label44.Text = ""; label45.Text = ""; label46.Text = ""; label47.Text = ""; label48.Text = ""; 
            label49.Text = "";label50.Text = ""; 

     if (
      comboBox1.SelectedItem==null || 
      comboBox2.SelectedItem==null || 
      comboBox_semester.SelectedItem==null) 
     { 
      MessageBox.Show("Please Select Complete Detail"); 

     } 
     else 
     { 
      while (reader.Read()) 
      { 

       int randomNumber = random.Next(1, 50); 

       labels[randomNumber].Text = String.Format("{0},\r\n{1},\r\n{2}", reader["CourseName"], reader["TeacherName"], reader["RoomName"]); 
      } 
     } 
    } 

Я хочу запрос для этих двух линий.

string a = comboBox_semester.SelectedText; 
string str = "SELECT CourseName, TeacherName, RoomName FROM Course_teacher, RoomInfo where Semester=(what should I need to write here) ORDER BY NEWID();); 

Пожалуйста, помогите

+0

Итак, у вас есть 'string a', который содержит семестр, выбранный пользователем, и вы не знаете, как его подавать в ваш запрос? –

+0

Это не отвечает на ваш вопрос, однако я бы посчитал нецелесообразным запрос на выбор combobox, так как пользователь может сделать «ошибку» или просто случайно выбрать параметры, которые могут замедлить или заморозить ваше приложение/MVC – KGCybeX

+0

@DrewKennedy да это мой вопрос – Fary

ответ

0

Лучший способ сделать это будет выглядеть примерно так:

"Where Semester = @Semester" 

Затем на следующей строке, можно добавить параметр к объекту SqlCommand, как так:

com.Parameters.AddWithValue("@Semester", a); 

Это позволяет объекту SQLCommand знать, как заменить вашу переменную (у меня есть имя d it @Semester пока) со значением, которое вы получили от пользователя.

+0

im, не получая никаких ошибок, но теперь, когда я нажимаю кнопку ... ничего не происходит .... – Fary

+0

Является ли ваша кнопка на событии клика установлена ​​на метод, ожидаете ли вы стрелять? – aaron

1

Вы должны поместить переменную a в вашем запросе, как так:

string str = "SELECT CourseName, TeacherName, RoomName FROM Course_teacher, " + 
"RoomInfo WHERE Semester = @Semester ORDER BY NEWID()"; 

com.Parameters.Add(new SqlParameter("Semester", a)); 

Сразу отметим, что я очистил ваш запрос немного, и я представил parameterized queries в случае, если вы не знакомы с ними.

+0

Это показывает мне ошибку, в которой говорится: «ИСПОЛЬЗОВАТЬ НЕОБХОДИМЫЙ ЛОКАЛЬНЫЙ ПЕРЕМЕННЫЙ» com. Почему это происходит? – Fary

+0

@Fary Это означает, что вы неправильно вставляете код. Вам нужно создать экземпляр 'com' first:' com = новый SqlCommand (str, con); ' –

Смежные вопросы