La dissortingbution spécifiée n'est pas valide lorsque vous essayez d'insert un caractère à deux lettres

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.

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.