Der er tre mulige scenarier for sådan en indsats:
- Indsættelsen lykkes.
- Du får en undtagelse.
- Du har en trigger, der erstatter indsatsen med en anden handling.
Jeg gætter på, at du ikke har en trigger, og da du ikke får en rekord i tabellen, må der være en undtagelse.
Har du en kode, der fanger undtagelsen på et hvilket som helst andet niveau? Det ville forklare, hvorfor du ikke kan se det, og det ville også lade databaseforbindelsen være ulukket, hvilket ville forklare, hvorfor du har problemer med at oprette forbindelse til databasen bagefter.
Brug af en using
blok for databaseforbindelsen ville lukke den korrekt, selvom der er en fejl i koden.
Du bruger en parametreret forespørgsel, men jeg kan ikke se, at du tilføjer parametrene til kommandoobjektet nogen steder i koden. Det ville være noget i stil med:
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;