2016-03-29 17 views
0
SqlConnection con = new SqlConnection(@"Data Source=shashi-PC\SQLEXPRESS;Initial Catalog=payroll;Integrated Security=True;Pooling=False"); 
     SqlCommand com = new SqlCommand("insert into Leave_trans values(" + txtempid.Text + ",'" + ddlleavetype.SelectedValue + "'," + txtallowedays.Text + "," + txtpendingleave.Text + ",'" + txtleavefrom.Text + "','" + txtleaveto.Text + "'," + txttotalleaves.Text + ")"); 
     com.Connection = con; 
     con.Open(); 
     com.ExecuteNonQuery(); 
     Response.Write("<script>alert('Leave data saved successfully')</script>"); 
     con.Close(); 
+0

bitte geben Sie mir die Lösung für meinen Fehler .... mein Code ist oben erwähnt –

+0

Sie müssen nicht kommentieren für eine Lösung ... das ist, warum Sie die Frage an erster Stelle gestellt. Außerdem vermute ich, dass einer Ihrer Parameter null oder ein unerwarteter Wert ist. Wir können Ihnen nicht helfen, ohne zu wissen, was diese Werte sind. Setzen Sie dort einen Haltepunkt und rufen Sie die vollständige Befehlszeichenfolge ab. – Ageonix

Antwort

0

Ich denke, das Problem ist in Ihrer Abfrage. Sie haben uns den Datentyp Ihrer Datenbankspalten nicht angegeben. Aber nehmen Sie von Ihrer Frage an, dass Sie etwas Text von TextBox und einem DropDownList vorgewählten Einzelteil einfügen. Von Ihrem TextBox Text erhalten Sie immer einen String-Typ-Wert und zum Einfügen string in Ihre Spalten sollten Sie das einfache Zitat '' davor und danach darauf verwenden. Aber auf Ihrer Anfrage haben Sie kein Angebot für einige Ihrer Wertparameter verwendet. Ich habe eine Vermutung gemacht und eine Abfrage für dich gemacht. probiere diese aktualisierte Version aus.

SqlConnection con = new SqlConnection(@"Data Source=shashi-PC\SQLEXPRESS;Initial Catalog=payroll;Integrated Security=True;Pooling=False"); 
     SqlCommand com = new SqlCommand("insert into Leave_trans values(" + "'" + txtempid.Text + "'", "'" + ddlleavetype.SelectedValue + "'","'" + txtallowedays.Text + "'","'" + txtpendingleave.Text + "'", "'" + txtleavefrom.Text + "'","'" + txtleaveto.Text + "'", "'" + txttotalleaves.Text + "')"); 
     com.Connection = con; 
     con.Open(); 
     com.ExecuteNonQuery(); 
     Response.Write("<script>alert('Leave data saved successfully')</script>"); 

Aber ich habe einen Vorschlag für Sie, dass Sie nicht string als Tabelle Primärschlüssel-Datentyp ist-soll, sollte es int Typ und ein anderer ist, Sie intid Ihrer ausgewählten Elements nehmen sollte Ihr DropDownList nicht der Text.

1

Diese Frage nicht direkt beantworten, aber man sollte nie nehmen Benutzereingaben und Verkettung Verwendung Zeichenfolge eine SQL-Abfrage (bitte nehmen Sie sich etwas Zeit, um über SQL-Injection z.B. here oder here zu lesen) zu bauen.

Anstatt die vollständige Abfrage von verketten, sollten Sie SqlParameter Instanzen als Platzhalter für Ihre Werte verwendet werden, zB:

var com = new SqlCommand(
    "insert into Leave_trans values(@empId, @leaveType, @allowedDays, ...)"); 
com.Parameters.Add(new SqlParameter("@empId", txtempid.Text)); 
com.Parameters.Add(new SqlParameter("@leaveType", ddlleavetype.SelectedValue)); 
com.Parameters.Add(new SqlParameter("@allowedDays", txtalloweddays.Text)); 
... 

BTW: die Ursache für das Problem ist, dass Sie nicht richtig sind einzelsträngige unter Angabe Ihre Eingaben im Innern die Abfrage (zB txtempid.Text ist nicht in Anführungszeichen). Die Verwendung von SqlParameters wird dieses Problem auch für Sie lösen.

Verwandte Themen