2016-08-09 37 views
0

Ich arbeite an Visual Studio 2013.SqlCommand INSERT-Abfrage fügt keine Daten in die Datenbank ein

Im folgenden Code wird die MessageBox.Show("Connected to database") korrekt angezeigt, aber die SQL-Abfrage fügt keine Daten in die Datenbanktabelle ein.

Wenn ich Daten manuell einfüge, fügt es ohne Probleme ein. Leider können die Daten nicht in den Befehl button_click eingefügt werden.

private void DataAdd_Load(object sender, EventArgs e) 
{ 
    try 
    { 
     conn = new SqlConnection("Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=Pathname;Integrated Security=True;Connect Timeout=30"); 
     conn.Open(); 
     MessageBox.Show("Connected to database"); 
     cmd = new SqlCommand("INSERT INTO datains (name, dob, gender, occupation, height, weight, relation, polexpo) values('abc', '22-Aug-2001', 'Male', 'qwe2', '23', '431', 'qw23e', 'asqwed');", conn); 
    } 
    catch (Exception e1) 
    { 
     MessageBox.Show("Connection failed"); 
    } 
} 

Was habe ich hier falsch gemacht oder was ich verpasst habe?

+0

Ist DataAdd_Loa d angerufen? Haben Sie eine Ausnahme ?, Sie haben die Verbindung nicht geschlossen, die Sie müssen. – Adil

+1

Mögliches Duplikat von [SqlCommand INSERT INTO Abfrage wird nicht ausgeführt] (http://stackoverflow.com/questions/17569051/sqlcommand-insert-into-query-does-not-execute) –

+0

@Adil es war mein dummer Fehler nicht schreibe die cmd.ExecuteNonquery, frage mich stundenlang und schließlich stapelte der Überlauf! Danke fürs Helfen! – amish

Antwort

5

Sie haben vergessen, die Abfrage auszuführen:

cmd.ExecuteNonQuery(); 

Es ist auch besser, die Verbindung zu schließen, nachdem die Arbeit getan ist:

conn.Close(); 
+0

Vielen Dank Man .. Mein schlechter .. Ich konnte das nicht herausfinden – amish

+0

Sie sind herzlich willkommen @amish – Mostafiz

1

Sie haben die ExecuteNonQuery() -Methode laufen Ihr cmd, damit es funktioniert, aber es ist auch ratsam, sowohl Verbindung als auch Befehl in eine using-Anweisung zu verpacken, damit sie entsorgt werden (die Verbindung sollte auch explizit geschlossen sein)