Convertir Nothing en NULL BDD
Bonjour à tous,
J'ai un petit programme en VB.NET, dans lequel j'utilise ADO.NET, qui remplit un serveur sous MS SQL 2008.
Je relève des données, de type Double par exemple, depuis un fichier que j'assigne à des variables 'maVariable = donneeRelevee' avec un Parse 'Double.Parse(maChaine)'.
Suite à ça, j'envoie maVariable à la classe qui s'occupe des requêtes et stocke la donnée. Jusque là pas de problème.
Là où ça coince, c'est quand la donnée relevée est absente, je dois la mettre NULLABLE au niveau de la BDD. Sauf que si elle est absente, le Parse ne fonctionne pas, je dois donc faire la procédure suivante :
Code:
1 2 3 4 5 6 7 8 9 10
| Public Sub Ajoute(ByRef dictionary As Dictionary(Of Integer, Double), ByVal countDictionary As Integer, ByVal str As String, ByVal ciClone As System.Globalization.CultureInfo)
Dim nb As Double = Nothing
If Double.TryParse(str.Replace(" ", ""), NumberStyles.Any, ciClone, nb) Then
dictionary.Add(countDictionary, nb)
Else
dictionary.Add(countDictionary, nb)
End If
End Sub |
Jusque là ça va, j'envoie mes valeurs à la procédure qui utilise ADO.NET
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| Public Sub maProcedure(donneeRelevee1, donneeRelevee2, ..)
Dim counterKvp As Integer = 0
For Each kvp As KeyValuePair(...) In uneVariable
Dim insertErrors As SqlCommand = New SqlCommand(maRequete)
With insertErrors.Parameters
.Add(New SqlParameter("@donneeRelevee1", SqlDbType.Real))
.Add(New SqlParameter("@donneeRelevee2", SqlDbType.Real))
End With
With insertErrors
.Parameters("@donnee1").Value = donneeRelevee1.Values(counterKvp)
.Parameters("@donnee2").Value = donneeRelevee2.Values(counterKvp)
End With
IDB.send(insertErrors)
counterKvp += 1
Next
End Sub |
Dans la configuration précédente, j'ai un "0" stocké dans la BDD à la place d'un "NULL". Comment je peux faire pour insérer un 'DBNull.Value' ?
J'ai pensé à une procédure de type :
Code:
1 2 3
| If donnee.Values(counterKvp) = Nothing Then
.Parameters("@donnee").Value = DBNull.Value
End If |
Il n'y a pas un meilleur moyen ?
Désolé pour le pavé et merci pour l'aide :ccool:
Jah