2016-08-09 111 views
0

Ich habe ein Problem beim Einfügen von Daten in WPF-Form. Es gibt keinen Fehler im Code, die Abfrage wird jedoch erfolgreich ausgeführt. Wenn ich meine Datenbank überprüfe, gibt es keine Daten. Folgendes ist der Code:SQL-Befehl erfolgreich ausgeführt, aber Daten werden nicht in WPF eingefügt Formular

bool insert() 
    { 
     try 
     { 
      Connection.Open(); 
      string query = "Insert into checkouts(cnic,medicine,next_trip) VALUES('@c','@m','@n')"; 
      SqlCommand command = new SqlCommand(query, Connection); 
      command.Parameters.AddWithValue("@c", cnic_box.Text.Replace("-","")); 
      command.Parameters.AddWithValue("@m", med_box.Text); 
      command.Parameters.AddWithValue("@n",Convert.ToDateTime(date_box.Text).ToString("yyyy-MM-dd")); 
      command.ExecuteNonQuery(); 
      Connection.Close(); 
      return true; 
     } 
     catch (Exception ex) 
     { 
      Connection.Close(); 
      return false; 
     } 
    } 
+0

Welche Datenbank? Haben Sie dort explizite Transaktionen? –

+0

Woher wissen Sie, ob es erfolgreich ausgeführt wurde? int count = befehl.ExecuteNonQuery(); um herauszufinden, wie viele Zeilen eingefügt werden. –

+0

@DheerajRoy, weil es keinen Syntaxfehler gibt und wenn ich die Abfrage in SQL Server einfügen, wird es erfolgreich ausgeführt. –

Antwort

0

Es ist wahrscheinlich die Zitate um Ihre Parameter, die Ihnen Kummer geben. Probieren Sie den folgenden Code aus und prüfen Sie, ob es besser funktioniert.

try { 
    Connection.Open(); 
    string query = "Insert into checkouts(cnic,medicine,next_trip) VALUES(@c,@m,@n)"; 
    SqlCommand command = new SqlCommand(query, Connection); 
    command.Parameters.AddWithValue("@c", cnic_box.Text.Replace("-","")); 
    command.Parameters.AddWithValue("@m", med_box.Text); 
    command.Parameters.AddWithValue("@n",Convert.ToDateTime(date_box.Text).ToString("yyyy-MM-dd")); 
    Connection.Close(); 
    return (command.ExecuteNonQuery() > 0); 
} 
catch (Exception ex) 
{ 
    Connection.Close(); 
    return false; 
} 

bearbeiten

Um die Daten versuchen zu ersetzen Ihre Abfrage mit diesem ausdrücklich verpflichten:

string query = "BEGIN TRANSACTION Insert into checkouts(cnic,medicine,next_trip) VALUES(@c,@m,@n) COMMIT TRANSACTION"; 
+0

Funktioniert immer noch nicht ... –

+0

@BilalAmjad Haben Sie jemals Transaktionen in Ihrem Code verwendet? Könnte es sein, dass Sie die Transaktion geschlossen haben und eine neue öffnen müssen, um die Daten zu erhalten? –

+0

@BilalAmjad Siehe die Bearbeitung für den Fall ... –

0

Entfernen Sie die einzelne Zitate aus dem VALUES Teil der Abfrage aus der Abfrage

bool insert() 
{ 
    try 
    { 
     Connection.Open(); 
     string query = "Insert into checkouts(cnic,medicine,next_trip) VALUES(@c, @m, @n)"; 
     SqlCommand command = new SqlCommand(query, Connection); 
     command.Parameters.AddWithValue("@c", cnic_box.Text.Replace("-","")); 
     command.Parameters.AddWithValue("@m", med_box.Text); 
     command.Parameters.AddWithValue("@n",Convert.ToDateTime(date_box.Text).ToString("yyyy-MM-dd")); 
     command.ExecuteNonQuery(); 
     Connection.Close(); 
     return true; 
    } 
    catch (Exception ex) 
    { 
     Connection.Close(); 
     return false; 
    } 
}