Salut,

Après avoir lu le cour sur les bonnes pratiques pour les accès aux données j'ai décidé d'utiliser les requêtes paramétrées plutôt que des concaténations de chaînes. Seulement, je ne vois pas comment insérer une valeur NULL en base et, curieusement, ce n'est pas dans la FAQ. J'ai trouvé un message qui paraît clair. Mais je ne peux pas utiliser un type en tant qu'expression. Nothing me retourne une NullReferenceException et je ne veux pas mettre 0 ou "" par défaut comme je le fais aujourd'hui.
Pouvez-vous m'indiquer la marche à suivre?
Voici un concentré du code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Private Sub executerSql2( _
	 ByVal codeStatut As Integer, _
	 Optional ByVal idDetail As Integer = 0, _
	 Optional ByVal exception As String = "", _
)
		Dim oConn As SqlConnection = New SqlConnection("une chaîne de connexion quelconque")
		Dim oCommand As SqlCommand = oConn.CreateCommand
		Dim _idDetail As SqlParameter = oCommand.CreateParameter
		Dim _codeStatut As SqlParameter = oCommand.CreateParameter
		Dim _exception As SqlParameter = oCommand.CreateParameter
 
		oCommand.CommandType = CommandType.Text
		oCommand.CommandText = "insert into MA_TABLE (ID_DETAIL, CODE_STATUT, EXCEPTION) " & _
		   "values (@idDetail, @codeStatut, @exception)"
		_idDetail.ParameterName = "@idDetail"
		_idDetail.DbType = DbType.Int32
		_idDetail.Direction = ParameterDirection.Input
		_idDetail.IsNullable = True
		_codeStatut.ParameterName = "@codeStatut"
		_codeStatut.DbType = DbType.Int32
		_codeStatut.Direction = ParameterDirection.Input
		_codeStatut.IsNullable = False
		_exception.ParameterName = "@exception"
		_exception.DbType = DbType.String
		_exception.Direction = ParameterDirection.Input
		_exception.IsNullable = True
 
		oCommand.Parameters.Add(_idDetail)
		oCommand.Parameters.Add(_codeStatut)
		oCommand.Parameters.Add(_exception)
 
		_codeStatut.Value = codeStatut
		_idDetail.Value = IIf(idDetail = 0, 0, idDetail)
		_exception.Value = IIf(exception = "", "Null", exception.Replace("'", "''"))
 
		oConn.Open()
		oCommand.ExecuteNonQuery()
		oConn.Close()
 
		oCommand.Dispose()
		oConn.Dispose()
End Sub
Le problème intervient donc au niveau des Iif. Ce que j'ai mis ne me convient pas du tout. Une idée?
D'ailleurs je suis aussi ouvert à tout autre commentaire, comme les valeurs par défaut des arguments de la méthode.

Merci par avance.