SQL - Procédure stockée avec paramètres
Bonjour,
j'ai écrit une procédure me permettant de faire ceci :
1/ Alimenter un DataSet à partir d'un fichier Xml
2/ Remplir une table de ma base de données SQL avec les données de la table du DataSet
Le première partie fonctionne sans problème.
Pour la seconde, elle fonctionne également sans erreur, mais lorsque j'affiche les données contenues dans la table de ma base (tblVilles), cette dernière contient des données bizarres : les 3 colonnes de la table sont : ID, Ville, CodePostal. Le champ ID contient bien un Guid comme attendu ; par contre le champ CodePostal ne contient qu'un seul chiffre et le champ Ville qu'une seule lettre !
Pourtant, avant l'exécution de la commande permettant l'insertion, les paramètres de la commande contiennent bien les valeurs souhaitées (je les ai affichées pour en être sûr). Voici le code :
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 25 26 27 28 29 30 31 32
|
Dim InsertCommand As New SqlClient.SqlCommand
Dim MyConnection As New SqlClient.SqlConnection
Dim Parameters(2) As SqlClient.SqlParameter
MyConnection.ConnectionString = My.Settings.TCConnectionString
InsertCommand.Connection = MyConnection
InsertCommand.CommandType = CommandType.StoredProcedure
InsertCommand.CommandText = "InsertVilles"
Parameters(0) = New SqlClient.SqlParameter("@ID", SqlDbType.UniqueIdentifier)
Parameters(1) = New SqlClient.SqlParameter("@CodePostal", SqlDbType.NVarChar)
Parameters(2) = New SqlClient.SqlParameter("@Ville", SqlDbType.NVarChar)
InsertCommand.Parameters.Add(Parameters(0))
InsertCommand.Parameters.Add(Parameters(1))
InsertCommand.Parameters.Add(Parameters(2))
Try
MyConnection.Open()
Dim r As DataRow
For Each r In dstVilles.Tables(0).Rows
Parameters(0).Value = Guid.NewGuid()
Parameters(1).Value = r(0).ToString
Parameters(2).Value = r(1).ToString
'Lorsque j'affiche le contenue des 3 paramètres ici,
'ils contiennent bien les valeurs attendues.
InsertCommand.ExecuteNonQuery()
Next
MyConnection.Close()
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical And MsgBoxStyle.OkOnly, "Erreur lors de l'insertion SQL !")
MyConnection.Close()
End Try |
Et voici le code de la procédure stockée :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
ALTER PROCEDURE dbo.InsertVilles
(
@ID uniqueidentifier,
@CodePostal nvarchar,
@Ville nvarchar
)
AS
BEGIN
INSERT INTO dbo.tblVilles VALUES (@ID, @Ville, @CodePostal);
END |
Je n'arrive pas à comprendre ce qui se passe...?