Es gibt drei mögliche Szenarien für eine solche Einfügung:
- Die Einfügung war erfolgreich.
- Sie erhalten eine Ausnahme.
- Sie haben einen Auslöser, der die Einfügung durch eine andere Aktion ersetzt.
Ich vermute, dass Sie keinen Auslöser haben, und da Sie keinen Datensatz in der Tabelle erhalten, muss es eine Ausnahme geben.
Haben Sie einen Code, der die Ausnahme auf einer anderen Ebene abfängt? Das würde erklären, warum Sie es nicht sehen, und es würde auch die Datenbankverbindung offen lassen, was erklären würde, warum Sie danach Probleme haben, sich mit der Datenbank zu verbinden.
Mit einem using
Block für die Datenbankverbindung würde diese ordnungsgemäß schließen, selbst wenn ein Fehler im Code vorhanden ist.
Sie verwenden eine parametrisierte Abfrage, aber ich kann nicht sehen, dass Sie die Parameter irgendwo im Code zum Befehlsobjekt hinzufügen. Das wäre so etwas wie:
cmd.Parameters.Add("Price", SqlDbType.Decimal).Value = price;
cmd.Parameters.Add("User", SqlDbType.NChar, 20).Value = user;
cmd.Parameters.Add("Time", SqlDbType.NChar, 15).Value = time;
cmd.Parameters.Add("Customer", SqlDbType.NChar, 10).Value = customer;
cmd.Parameters.Add("Discount", SqlDbType.Decimal).Value = discount;
cmd.Parameters.Add("FullPrice", SqlDbType.Decimal).Value = fullPrice;