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 :Le problème intervient donc au niveau des Iif. Ce que j'ai mis ne me convient pas du tout. Une idée?
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
D'ailleurs je suis aussi ouvert à tout autre commentaire, comme les valeurs par défaut des arguments de la méthode.
Merci par avance.
Partager