Il existe trois scénarios possibles pour une insertion comme celle-ci :
- L'insertion a réussi.
- Vous obtenez une exception.
- Vous avez un déclencheur qui remplace l'insertion par une autre action.
Je suppose que vous n'avez pas de déclencheur, et comme vous n'obtenez pas d'enregistrement dans la table, il doit y avoir une exception.
Avez-vous un code qui intercepte l'exception à un autre niveau ? Cela expliquerait pourquoi vous ne le voyez pas, et cela laisserait également la connexion à la base de données non fermée, ce qui expliquerait pourquoi vous avez des problèmes pour vous connecter à la base de données par la suite.
Utiliser un using
bloc pour la connexion à la base de données le fermerait correctement même s'il y a une erreur dans le code.
Vous utilisez une requête paramétrée, mais je ne vois pas que vous ajoutez les paramètres à l'objet de commande n'importe où dans le code. Ce serait quelque chose comme :
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;