La conversion implicite de type de données nvarchar à varbinary(max) n'est pas autorisé
J'obtiens cette erreur quand j'essaie d'insérer une DBNull.Valeur dans une nullable varbinary(max) champ:
Implicit conversion from data type nvarchar to varbinary(max) is not allowed. Use the CONVERT function to run this query.
C'est mon code:
insertCMD.Parameters.AddWithValue("@ErrorScreenshot", SqlDbType.VarBinary).Value = DBNull.Value;
Je sais qu'il existe des doublons de questions, mais je n'utilise PAS une Chaîne comme les autres.
Que dois-je tort?
Mise à JOUR:
using (var insertCMD = new SqlCommand("INSERT INTO TestplanTeststep (TeststepId,TestplanId,CreatedAt,ErrorText,ErrorScreenshot,TestState) VALUES (@TeststepId, @TestplanId,@CreatedAt,@ErrorText,@ErrorScreenshot,@TestState)", con))
{
var p1 = insertCMD.Parameters.Add("@TeststepId", SqlDbType.Int);
var p2 = insertCMD.Parameters.Add("@CreatedAt", SqlDbType.DateTime);
insertCMD.Parameters.AddWithValue("@TestplanId", testplan.Id);
insertCMD.Parameters.AddWithValue("@ErrorText", (object) DBNull.Value);
insertCMD.Parameters.AddWithValue("@ErrorScreenshot", (object) DBNull.Value);
insertCMD.Parameters.AddWithValue("@TestState", (int)Teststep.TeststepTestState.Untested);
foreach (Teststep step in teststeps)
{
p1.Value = step.Id;
p2.Value = step.CreatedAt;
insertCMD.ExecuteNonQuery();
}
}
Ne ressemble pas à la bonne ligne de code. UniqueIdentifier n'est pas mentionné du tout. Peut-être de fournir la procédure stockée définition trop?
Désolé, j'ai copié le mauvais exception. Maintenant son corrigé.
Le deuxième paramètre de
Désolé, j'ai copié le mauvais exception. Maintenant son corrigé.
Le deuxième paramètre de
AddWithValue
est la valeur. Pas le type de données.OriginalL'auteur Pascal | 2012-07-10
Vous devez vous connecter pour publier un commentaire.
Pourquoi ne pas changer votre SQL:
ou tout simplement
...et omettre les deux paramètres?
Si c'est toujours NULLE, ce qui aura le même effet.
Sinon, essayez-la en deux lignes:
Sinon, dans l'original de votre instruction SQL insert, vous n'êtes pas définir le type de paramètre, mais en passant varbinary, d'où l'erreur.
ah, vous étiez plus rapide sur le -1 truc hehe. Je veux explicitement définie à null de cette façon, d'autres ou je sais sur le comportement par défaut de la table.
OriginalL'auteur
J'ai eu le même problème lors de l'insertion
DBNull.Value
pour unVarbinary(Max)
colonne. Après recherche sur Google, j'ai trouvé une solution qui peut vous aider:Vous devez définir la taille -1 qui signifie
Max
longueur pour varbinary colonne lors de l'ajout de votre paramètre sql:Donc dans votre cas:
OriginalL'auteur