2016-11-29 1 views
0
protected void Button1_Click(object sender, EventArgs e) 
    { 
     string client = TextBox1.Text; 
     string selected = RadioButtonList1.SelectedValue; 
     string calendar = Calendar1.SelectedDate.ToShortDateString(); 
     string disease = txtDisease.Text; 

     SqlCommand insert = new SqlCommand("insert into Appointment(Client_ID, DateofAppointment, TimeofAppointment, Disease) values(@Client_ID, @DateofAppointment, @TimeofAppointment, @Disease)", conn); 
     try 
     { 
      conn.Open(); 

      SqlCommand cmd = new SqlCommand("select * from Client where Client_ID = @Client_ID", conn); 
      cmd.Parameters.AddWithValue("@Client_ID", TextBox1.Text); 
      SqlDataAdapter da = new SqlDataAdapter(cmd); 
      DataTable dt = new DataTable(); 
      da.Fill(dt); 
      if (dt.Rows.Count > 0) 
      {  
        insert.Parameters.AddWithValue("@Client_ID", client); 
        insert.Parameters.AddWithValue("@DateofAppointment", calendar); 
        insert.Parameters.AddWithValue("@TimeofAppointment", selected); 
        insert.Parameters.AddWithValue("@Disease", disease); 
        insert.ExecuteNonQuery(); 
        TextBox1.Text = ""; 
        RadioButtonList1.SelectedIndex = -1; 
        txtDisease.Text = ""; 
        ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('Appointment submitted! Please wait for your SMS confirmation. Thank you!')</script>"); 
      } 
      else 
      { 
       TextBox1.Text = ""; 
       RadioButtonList1.SelectedIndex = -1; 
       txtDisease.Text = ""; 
       ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('You are not a registered client!')</script>"); 
      } 
     } 
     catch 
     { 
      conn.Close(); 
     } 

    } 


} 

Я хочу создать еще одну команду для поиска, если дата и связь уже выполнены, прежде чем вставлять их в мой db.Как выполнить другую команду SELECT после выполнения первого?

+0

Создание 2-й командный объект и назвать его, так же, как и первый –

+0

еще лучше, почему бы вам не написать хранимую процедуру и все запускается на выполнение в один раз? –

+0

Можете ли вы показать мне, как? Я попытался создать еще одну команду перед параметром insert.parameters, но он не работает. –

ответ

0

Не знаете, каково было ваше первоначальное исключение, но полезно включить это при отправке вопроса.

Также о вашем соединении, соединения уровня уровня обычно не рекомендуются. Sql Server обрабатывает пул соединений для вас, поэтому лучше всего использовать ваше соединение, как только вы это сделаете. Если вы хотите выполнить запрос (в другом методе или классе), создайте новое соединение. Также заверните свои соединения в блоках using, чтобы они были закрыты и расположены.

И в отношении вашей даты лучше всегда сохранять данные в своем родном виде. Это означает, что ваш тип столбца для вашей даты должен быть Sql Date, а не строкой. Это также означает, что ваше значение параметра для вашего календаря должно быть DateTime calendar = Calendar1.SelectedDate;, а не string.

protected void Button1_Click(object sender, EventArgs e) 
{ 
    string client = TextBox1.Text; 
    string selected = RadioButtonList1.SelectedValue; 

    // this should be a DateTime instance, not a string 
    string calendar = Calendar1.SelectedDate.ToShortDateString(); 

    string disease = txtDisease.Text; 

    try 
    { 
     conn.Open(); 

     SqlCommand cmd = new SqlCommand("select 1 from Appointment WHERE DateofAppointment = @DateofAppointment AND TimeofAppointment = @TimeofAppointment", conn); 
     cmd.Parameters.AddWithValue("@DateofAppointment", calendar); 
     cmd.Parameters.AddWithValue("@TimeofAppointment", selected); 
     bool exists = false; 
     using(var reader = cmd.ExecuteReader()) { 
      exists = reader.Read(); // if this returns true there is a record 
     } 

     // do something based on exists 

     SqlCommand insert = new SqlCommand("insert into Appointment(Client_ID, DateofAppointment, TimeofAppointment, Disease) values(@Client_ID, @DateofAppointment, @TimeofAppointment, @Disease)", conn); 

     // repurpose same pointer but to different instance 
     cmd = new SqlCommand("select * from Client where Client_ID = @Client_ID", conn); 
     cmd.Parameters.AddWithValue("@Client_ID", TextBox1.Text); 
     SqlDataAdapter da = new SqlDataAdapter(cmd); 
     DataTable dt = new DataTable(); 
     da.Fill(dt); 
     if (dt.Rows.Count > 0) 
     {  
       insert.Parameters.AddWithValue("@Client_ID", client); 
       insert.Parameters.AddWithValue("@DateofAppointment", calendar); 
       insert.Parameters.AddWithValue("@TimeofAppointment", selected); 
       insert.Parameters.AddWithValue("@Disease", disease); 
       insert.ExecuteNonQuery(); 
       TextBox1.Text = ""; 
       RadioButtonList1.SelectedIndex = -1; 
       txtDisease.Text = ""; 
       ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('Appointment submitted! Please wait for your SMS confirmation. Thank you!')</script>"); 
     } 
     else 
     { 
      TextBox1.Text = ""; 
      RadioButtonList1.SelectedIndex = -1; 
      txtDisease.Text = ""; 
      ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('You are not a registered client!')</script>"); 
     } 
    } 
    catch 
    { 
     conn.Close(); 
    } 
} 
+1

Я думаю, что OP хочет проверить, доступны ли дата и время, независимо от идентификатора клиента, т.е. выберите 1 из Назначения W ЗДЕСЬ DateofAppointment = @DateofAppointment "AND TimeofAppointment = @TimeofAppointment –

+0

@inquisitive_mind - gotcha, я изменю его. – Igor

+0

Это не работает .... :( –

0

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

cmd.CommandText = "SELECT COUNT(*) FROM Client where {you conditions}"; 
Int32 count = (Int32) cmd.ExecuteScalar(); 

А затем проверить, если count больше 0, то выполнение второго.

+0

Это не работает ..... –

+0

Можете ли вы опубликовать обновленный код? – Yaser

+0

Я отправил его, пожалуйста, проверьте. Мне нужно это для wooork.:/ –

0

protected void Button1_Click (отправитель объекта, EventArgs e) { string client = TextBox1.Text; string selected = RadioButtonList1.SelectedValue; строка calendar = Calendar1.SelectedDate.ToShortDateString(); string disease = txtDisease.Text;

 SqlCommand insert = new SqlCommand("insert into Appointment(Client_ID, DateofAppointment, TimeofAppointment, Disease) values(@Client_ID, @DateofAppointment, @TimeofAppointment, @Disease)", conn); 
     try 
     { 
      conn.Open(); 

      SqlCommand cmd = new SqlCommand("select * from Client where Client_ID = @Client_ID", conn); 
      cmd.Parameters.AddWithValue("@Client_ID", TextBox1.Text); 
      SqlDataAdapter da = new SqlDataAdapter(cmd); 
      DataTable dt = new DataTable(); 
      da.Fill(dt); 
      if (dt.Rows.Count > 0) 
      { 
       SqlCommand search = new SqlCommand("select * from Appointment where DateofAppointment = @DateofAppointment and TimeofAppointment = @TimeofAppointment", conn); 
       search.Parameters.AddWithValue("@DateofAppointment", calendar); 
       search.Parameters.AddWithValue("@TimeofAppointment", selected); 
       Int32 count = (Int32)search.ExecuteScalar(); 
       if (count > 0) 
       { 
        ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('Error!')</script>"); 
       } 
       else 
       { 
        insert.Parameters.AddWithValue("@Client_ID", client); 
        insert.Parameters.AddWithValue("@DateofAppointment", calendar); 
        insert.Parameters.AddWithValue("@TimeofAppointment", selected); 
        insert.Parameters.AddWithValue("@Disease", disease); 
        insert.ExecuteNonQuery(); 
        TextBox1.Text = ""; 
        RadioButtonList1.SelectedIndex = -1; 
        txtDisease.Text = ""; 
        ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('Appointment submitted! Please wait for your SMS confirmation. Thank you!')</script>"); 
       } 
      } 
      else 
      { 
       TextBox1.Text = ""; 
       RadioButtonList1.SelectedIndex = -1; 
       txtDisease.Text = ""; 
       ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('You are not a registered client!')</script>"); 
      } 
     } 
     catch 
     { 
      conn.Close(); 
     } 

    } 


} 

Это все еще не работает ... :(

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