2016-08-04 3 views
0
using (SqlConnection con = new SqlConnection("Data Source=DESKTOP-O72COGQ;Initial Catalog=ClinicManagementtest;Integrated Security=True")) 
     { 
      con.Open(); 
      SqlCommand sc = new SqlCommand("INSERT INTO Patient_Details VALUES(@Id, @Name, @Age, @Contact No, @Address", con); 
      sc.Parameters.AddWithValue("@Id", textBox1.Text); 
      sc.Parameters.AddWithValue("@Name", textBox2.Text); 
      sc.Parameters.AddWithValue("@Contact No", textBox3.Text); 

      sc.Parameters.AddWithValue("@Address", textBox5.Text); 
      int o = sc.ExecuteNonQuery(); 
      MessageBox.Show(o + ":Record has been inserted"); 
      con.Close(); 

     } 

enter image description hereданные не получает сохранены

+0

Вы пропустили скобку в конце команды вставки. – Sankar

+1

Не делай свою жизнь труднее. Не используйте пробелы в именах параметров. И у вас есть 6 полей, вставьте 5 заполнитель параметров, но добавьте только 4 параметра. Вы получили исключение? – Steve

+0

Я бы не стал использовать пробелы в идентификаторах sql вообще ... –

ответ

0

Вы делаете много ошибок здесь.

  • Во-первых, у вас есть 6 полей в таблице, и если вы не даете список полей, когда вы делаете запрос вставки, то вы должны добавить значения для все 6 полей.
  • Во-вторых, у вас есть 5 параметров, но вы добавляете только 4 параметров, и это еще одно исключение.
  • И последнее, но не в последнюю очередь синтаксис оператора вставки формально неправильно, потому что нет закрытия parenthesys

Итак, давайте попробуем исправить в меру наших знаний

string cmdText = @"INSERT INTO Patient_Details 
         (ID, Name, Age, Gender, [Contact No], Address) 
        VALUES(@Id,@Name,@Age,@Gender,@ContactNo, @Address)" 
using (SqlConnection con = new SqlConnection(....)) 
{ 
    con.Open(); 
    SqlCommand sc = new SqlCommand(cmdText, con); 
    sc.Parameters.AddWithValue("@Id", textBox1.Text); 
    sc.Parameters.AddWithValue("@Name", textBox2.Text); 

    // For the following two fields, add a value or remove 
    // the parameters and fix the query text above.... 
    sc.Parameters.AddWithValue("@age", ????); 
    sc.Parameters.AddWithValue("@gender", ????); 
    sc.Parameters.AddWithValue("@ContactNo", textBox3.Text); 
    sc.Parameters.AddWithValue("@Address", textBox5.Text); 
    int o = sc.ExecuteNonQuery(); 
    MessageBox.Show(o + ":Record has been inserted"); 
} 
+0

Кто-то находит забаву в том, чтобы опробовать ответы здесь? – Steve

-1

Как Sankar Радж указал, что вы пропустили a ) в запросе Insert и параметр @Age для добавления. Использование пространства в параметре @Contact No также недопустимо. Вы использовали using для SqlConnection. Я предлагаю вам использовать то же самое для SqlCommand, то вам не нужно явно указывать Dispose. И снова кажется, что вы не используете try catch, что вы не смогли идентифицировать проблему.

РЕКОМЕНДУЕМОГО КОД

try{ 
    using (SqlConnection con = new SqlConnection("Data Source=DESKTOP-O72COGQ;Initial Catalog=ClinicManagementtest;Integrated Security=True")) 
    { 
     con.Open(); 
     using (SqlCommand sc = new SqlCommand("INSERT INTO Patient_Details VALUES(@Id, @Name, @Age,@Gender, @ContactNo, @Address)", con)){ 
      sc.Parameters.AddWithValue("@Id", textBox1.Text); 
      sc.Parameters.AddWithValue("@Name", textBox2.Text); 
      sc.Parameters.AddWithValue("@Gender", textBox3.Text); 
      sc.Parameters.AddWithValue("@ContactNo", textBox4.Text); 
      sc.Parameters.AddWithValue("@Age", textBox5.Text); 
      sc.Parameters.AddWithValue("@Address", textBox6.Text); 
      int o = sc.ExecuteNonQuery(); 
      MessageBox.Show(o + ":Record has been inserted"); 
     } 
    } 
}catch(Exception ex){ 
    MessageBox.Show(ex.Message); 
} 

Примечание: Я удалил con.Close(). Поскольку вы используете оператор using, он автоматически будет Close & Dispose Подключение и освобождение ресурсов, которые он использует.

+0

Могу ли я узнать, почему голос? У меня есть причина – jonju

+0

Я бы сказал, что ваш ответ не может работать, потому что таблица имеет 6 полей и без указания имен столбцов в INSERT, тогда вам нужно добавить все 6 значений полей – Steve

+0

Ха-ха! «Пол» Я вижу это сейчас. Обновление ... – jonju