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 hereDaten nicht

+0

Sie haben die Klammer am Ende des Einfügebefehls verpasst. – Sankar

+1

Machen Sie Ihr Leben nicht härter. Verwenden Sie keine Leerzeichen in Parameternamen. Und Sie haben 6 Felder, fügen 5 Platzhalter ein, fügen aber nur 4 Parameter hinzu. Hast du eine Ausnahme bekommen? – Steve

+0

Ich würde argumentieren, keine Leerzeichen in SQL-Kennungen überhaupt zu verwenden ... –

Antwort

0

gespeichert bekommen Sie machen eine Menge Fehler hier.

  • Zuerst müssen Sie 6 Felder in der Tabelle, und wenn Sie nicht über eine Liste von Feldern geben, wenn Sie eine INSERT-Abfrage machen, dann sollten Sie Werte hinzufügen für alle 6 Felder.
  • Zweitens haben Sie 5 Parameter Platzhalter, aber Sie fügen nur 4 Parameter hinzu, und dies ist eine weitere Ausnahme.
  • Last but not least die Syntax der Anweisung Insert ist formal falsch, weil es keine Schließung parenthesys ist

So lassen Sie uns bei bestem Wissen

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

Jemand macht Spaß, hier die Antworten zu verwerfen? – Steve

-1

wie Sankar zu beheben versuchen Raj wies darauf hin, dass Sie die a ) in der Insert Abfrage verpasst haben und einen Parameter @Age hinzufügen.Es ist auch nicht erlaubt, Platz in Parameter @Contact No zu verwenden. Sie haben using für SqlConnection verwendet. Ich schlage vor, Sie verwenden das gleiche für SqlCommand auch, dann müssen Sie nicht explizit Dispose es. Und wieder scheint es, dass Sie try catch nicht benutzen, das Sie das Problem nicht identifizieren konnten.

SUGGESTED CODE

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); 
} 

Anmerkung: Ich con.Close() entfernt haben. Da Sie using Anweisung verwenden, wird es automatisch die Close & Dispose Verbindung und die freigegebenen Ressourcen freigeben.

+0

Darf ich wissen, warum die down vote? Sorge dafür, mir einen Grund zu geben – jonju

+0

Ich würde sagen, dass Ihre Antwort nicht funktionieren kann, weil die Tabelle 6 Felder hat und ohne Angabe der Spaltennamen im INSERT müssen Sie dann alle 6 Felder Werte hinzufügen – Steve

+0

Haha! 'Geschlecht' Ich sehe es gerade jetzt. Aktualisierung ... – jonju