Hay tres escenarios posibles para una inserción como esa:
- La inserción se realizó correctamente.
- Obtienes una excepción.
- Tiene un disparador que reemplaza la inserción con alguna otra acción.
Supongo que no tienes un disparador, y como no obtienes un registro en la tabla, tiene que haber una excepción.
¿Tiene algún código que atrape la excepción en cualquier otro nivel? Eso explicaría por qué no lo ves, y también dejaría la conexión de la base de datos sin cerrar, lo que explicaría por qué tienes problemas para conectarte a la base de datos después.
Usando un using
bloque para la conexión de la base de datos lo cerraría correctamente incluso si hay un error en el código.
Está utilizando una consulta parametrizada, pero no veo que agregue los parámetros al objeto de comando en ninguna parte del código. Eso sería algo como:
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;