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 : 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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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...?