2017-12-17 2 views
0

Ich eigentlich neu in asp.net C# Ich möchte wissen, warum dieser Code unten nicht funktioniert. Alles, was ich tun möchte, ist das Speichern von Daten in einer SQL Server-Datenbank.Abfrage speichert nicht meine Registrierungsformular Daten asp.net

Ich habe 2 Tabellen und möchte das Datenformular eingegeben in der Datenbank gespeichert. Schauen Sie sich die select-Anweisung zum Abrufen des Primärschlüssels speichern als Fremdschlüssel in der anderen Tabelle

String q = "Insert into dbo.requests(request_date,request_type,visit_date,reason,user_id,status_id)values('" + DateTime.Now.ToString() + "','" + DropDownList1.SelectedValue.ToString() + "','" + TextBox8.Text.ToString() + "','" + TextBox9.Text.ToString() + "','"+ 1+"','"+ 2+"')"; 

SqlCommand cmd = new SqlCommand(q, con); 
cmd.ExecuteNonQuery(); 

con.Close(); 

con2.Open(); 

if (con2.State == System.Data.ConnectionState.Open) 
{ 
    String a = "select top 1 request_id from dbo.requests where request_date= CAST(GETDATE() AS DATE and user_id=999 order by request_id DESC "; 

    SqlCommand cmd2 = new SqlCommand(a, con2); 

    int r = cmd2.ExecuteNonQuery(); 
} 

con2.Close(); 

con3.Open(); 

if (con3.State == System.Data.ConnectionState.Open) 
{ 
    String b = "INSERT into dbo.visitor(visitor_Fname,visitor_Mname,visitor_family_name,visitor_id,visitor_mobile,request_id,place_of_work,country_name) values ('" + TextBox1.Text.ToString() + "','" + TextBox2.Text.ToString() + "','" + TextBox3.Text.ToString() + "','" + TextBox4.Text.ToString() + "' , '" + TextBox5.Text.ToString() + "','r', '" + TextBox6.Text.ToString() + "', '" + TextBox7.Text.ToString() + "' )"; 

    SqlCommand cmd3 = new SqlCommand(b, con3); 

    cmd3.ExecuteNonQuery(); 
} 
+1

[SQL-Injection-Warnung] (http://msdn.microsoft.com/en-us/library/ms161953%28v=sql.105%29.aspx) - Sie sollten ** nicht ** Ihre SQL-Anweisungen verketten - Verwenden Sie stattdessen ** parametrisierte Abfragen **, um SQL-Injection zu vermeiden - Auschecken [Little Bobby Tables] (https://xkcd.com/327/) –

Antwort

0

Sie sollten es ändern

int r = cmd2.ExecuteNonQuery(); 

zu

int r = (int)cmd2.ExecuteScalar(); 

Auswahl Zum Abrufen nur ein Feld verwendet ExecuteScalar anstelle von ExecuteNonQuery. ExecuteNonQuery gibt keine Auswahlfelder zurück.

+0

Ich habe es geändert, aber die gleichen Problemdaten nicht einfügen! – yara

+0

Haben Sie einen Fehler? – lucky

0

Speichern Sie einfach request_id in Variable mit Datentabelle. Tatsächlich speichern Sie 'r' in der Tabelle, die falsch ist. Versuchen Sie request_id von der SELECT-Anweisung in der Variablen zu speichern.

Verwandte Themen