IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

SQL - Procédure stockée avec paramètres


Sujet :

VB.NET

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Points : 265
    Points
    265
    Par défaut 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 : 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...?

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    le nvarchar il faut lui dire combien de caractères sinon c'est un seul par défaut

    donc par exemple :

    @ID uniqueidentifier,
    @CodePostal nvarchar (5),
    @Ville nvarchar(80)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Points : 265
    Points
    265
    Par défaut
    OK. Comme la longueur des champs est définie lors de la création de la table, je pensais qu'il ne fallait pas la préciser dans la procédure stockée.
    Tout marche.
    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 01/05/2013, 14h29
  2. [CR XI] Utilisation d'une procédure stockée avec paramètre(s)
    Par ferranzo dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 08/09/2011, 20h26
  3. Réponses: 1
    Dernier message: 23/08/2010, 12h13
  4. Lancement d'une procédure stockée avec paramètres
    Par ptitenana_vtq dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 08/06/2010, 15h16
  5. [SQL2K5] Procédure stockée avec paramètre à valeurs multiple
    Par Jinroh77 dans le forum Développement
    Réponses: 1
    Dernier message: 16/05/2008, 17h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo