J'ai donc quelque chose comme ça dans mon code
ssortingng sqlQuery = "INSERT PERSON (FIRST_NAME, SURNAME, FIRST_CODE, SECOND_CODE) VALUES (@FIRST_NAME, @SURNAME, @FIRST_CODE, @SECOND_CODE)"; SqlCommand command = new SqlCommand(sqlQuery); command.Parameters.AddWithValue("@FIRST_NAME", "Testo"); command.Parameters.AddWithValue("@SURNAME", "Tester"); command.Parameters.AddWithValue("@FIRST_CODE", 'A'); command.Parameters.AddWithValue("@SECOND_CODE", "CA");
Et dans le DB la table PERSON ressemble à ceci
[FIRST_NAME] [varchar](20) NULL, [SURNAME] [varchar](20) NULL, [FIRST_CODE] [char](1) NULL, [SECOND_CODE] [char](2) NULL,
Le problème est, quand SqlCommand
le SqlCommand
je reçois une exception en disant
La dissortingbution spécifiée n'est pas valide.
- Nom de colonne non valide sur avoir dans SQL Server
- La connection n'a pas été fermée. L'état actuel de la connection est ouvert. Erreur C #
- Les procédures stockées ne voient pas la table temporaire créée dans la même connection
- comment gérer la relation d'édition Student et Book dans Library Management System dans C # .net?
- SQL sélectionner les lignes supérieures en fonction de la limite
Je suis presque sûr que les problèmes proviennent de la dissortingbution du caractère SECOND_CODE
demandant un caractère char(2)
. Le FIRST_CODE
d'autre part fonctionne bien. SECOND_CODE
ce que SECOND_CODE
paramètre SECOND_CODE
correctement? Y a-t-il quelque chose qui me manque?
Le problème est le plus susceptible d'insert un caractère dans FIRST_CODE
, qui est CHAR(1)
. C'est un type de ssortingng
avec une limitation d'un seul caractère, pas un type à un seul caractère. Le SGBDR signale une erreur de troncation de données si vous tentez d'insert une ssortingng
plus d'un caractère, mais il s'attend à ce que vous fournissiez une ssortingng
et non un ssortingng
.
Cela devrait fonctionner:
command.Parameters.AddWithValue("@FIRST_CODE", "A");
Reportez-vous à la table qui mappe le type de SQL Server aux types de .NET pour plus d'informations.