Ma compréhension est que le type de données Par conséquent, je ne comprends pas pourquoi le code suivant renvoie la "valeur de dbnull ne peut pas être converti en chaîne" p>
Pour le contexte, j'ai une classe dont les valeurs seront écrites dans une base de données. Lorsque l'objet de la classe est créé, il est possible que toutes ses variables ne disposeraient pas de valeurs. Je veux que les valeurs manquantes soient string code> dans vb.net est nullable. p>
nom public comme string = dbnull.value code> p>
3 Réponses :
dbnull code> ne peut pas être converti en une chaîne, vous devez le tester. Vous pouvez attribuer
rien code> à une chaîne, vous pouvez donc utiliser:
Public name As String = Nothing
Le lien fourni par @icemanind montre une méthode .tostring () qui renvoie string.empty.
dbnull code> n'est pas vraiment équivalent à
rien code>. C'est une classe.
valeur code> est un champ code> partagé code> de l'objet code> dbnull code>, qui définit simplement la valeur de
valeur code> à une instance de la
DBNULL code> classe. Vous pouvez voir cela pour vous-même ici . P>
À "Convertir" dbnull code> sur une chaîne, vous devez utiliser
dbnull.value.tostring code>, puisque vous devez tester "code> dbnull code> afin de déterminer Si cela doit être converti en une chaîne, quelle est la différence entre le faire et le remplacer par
rien code> lors de la sauvegarde sur une chaîne?
Pour faire ce que vous voulez avec les écrivies à la base de données, vous pouvez utiliser rien code> pour la valeur, puis lors de la rédaction de la base de données, recherchez-vous
YourString n'est rien code> et si oui, définissez la valeur du paramètre sur
dbnull.value code>.
Public Class Datum
Property Name As String = Nothing
End Class
Sub X()
Dim q As New Datum
Using cmd As New SqlCommand()
' other code...
cmd.Parameters.Add(New SqlParameter With {.ParameterName = "@Name", .SqlDbType = SqlDbType.NVarChar, .Size = 123})
If q.Name Is Nothing Then
cmd.Parameters("@Name").Value = DBNull.Value
Else
cmd.Parameters("@Name").Value = q.Name
End If
' other code....
End Using
End Sub