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

Accès aux données Discussion :

Problème d'insertion en bdd postgre d'un dataSet


Sujet :

Accès aux données

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 135
    Points : 53
    Points
    53
    Par défaut Problème d'insertion en bdd postgre d'un dataSet
    Bonjour,

    Je suis en train d'essayer d'enregistrer les modifications qu'il y a eu lieux sur mon dataSet dans une base postgreSql, mais j'obtiens l'erreur suivante : System.invalidCastException

    Ma fonction d'insertion
    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
     
     Public Sub setAgent(username As String, ByRef dataSetAgent As DataSet, idNext As Integer)
            Dim sql As String = "INSERT INTO agents(id,num_agent,username, nom_agent,prenom_agent,mail,serv_local,commentaire,organisation,b_prod,b_plan,site) values (@id,'@numagent','@username','@nom','@prenom','@mail','@serv','@com','@orga',@bprod,@bplan,@site)"
            Dim pgCommand As New NpgsqlCommand(sql, conPG)
            pgCommand.Parameters.Add("@id", NpgsqlTypes.NpgsqlDbType.Integer)
            pgCommand.Parameters.Add("@numagent", NpgsqlTypes.NpgsqlDbType.Varchar)
            pgCommand.Parameters.Add("@username", NpgsqlTypes.NpgsqlDbType.Varchar)
            pgCommand.Parameters.Add("@nom", NpgsqlTypes.NpgsqlDbType.Varchar)
            pgCommand.Parameters.Add("@prenom", NpgsqlTypes.NpgsqlDbType.Varchar)
            pgCommand.Parameters.Add("@mail", NpgsqlTypes.NpgsqlDbType.Varchar)
            pgCommand.Parameters.Add("@serv", NpgsqlTypes.NpgsqlDbType.Varchar)
            pgCommand.Parameters.Add("@com", NpgsqlTypes.NpgsqlDbType.Varchar)
            pgCommand.Parameters.Add("@orga", NpgsqlTypes.NpgsqlDbType.Varchar)
            pgCommand.Parameters.Add("@bprod", NpgsqlTypes.NpgsqlDbType.Boolean)
            pgCommand.Parameters.Add("@bplan", NpgsqlTypes.NpgsqlDbType.Boolean)
            pgCommand.Parameters.Add("@site", NpgsqlTypes.NpgsqlDbType.Integer)
            Dim Adaptateur As New NpgsqlDataAdapter(pgCommand)
     
            Dim nvLigne As DataRow = dataSetAgent.Tables("agents").NewRow
            nvLigne("id") = idNext
            nvLigne("username") = username
            dataSetAgent.Tables("agents").Rows.Add(nvLigne)
     
            Adaptateur.Fill(dataSetAgent, "agents")
     
            pgCommand = Nothing
        End Sub
    Faut il renseigner tous les champs dans ma requête? que ce soit dans la déclaration du parameters et du dataset?
    J'essaye d'ajouter une ligne à mon dataset et d'enregistrer les modifications.

    Merci

  2. #2
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 135
    Points : 53
    Points
    53
    Par défaut
    J'ai réussi de cette facon, mais j'ai un doute sur l'optimisation 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
     
    Public Sub setAgent(username As String, ByRef dataSetAgent As DataSet, idNext As Integer)
            Dim pgCommand As New NpgsqlCommand("SELECT id, username from agents", conPG)
            Dim Adaptateur As New NpgsqlDataAdapter(pgCommand)
            Adaptateur.Fill(dataSetAgent, "agents")
     
            Dim sql As String = "INSERT INTO agents(id,username,b_prod,b_plan) values (@id,@username,@bprod,@bplan)"
            Adaptateur.InsertCommand = New NpgsqlCommand(sql, conPG)
            Adaptateur.InsertCommand.Parameters.AddWithValue("@id", NpgsqlTypes.NpgsqlDbType.Integer, idNext)
            Adaptateur.InsertCommand.Parameters.AddWithValue("@username", NpgsqlTypes.NpgsqlDbType.Varchar, username)
            Adaptateur.InsertCommand.Parameters.AddWithValue("@bprod", NpgsqlTypes.NpgsqlDbType.Boolean, False)
            Adaptateur.InsertCommand.Parameters.AddWithValue("@bplan", NpgsqlTypes.NpgsqlDbType.Boolean, False)
            'Dim Adaptateur As New NpgsqlDataAdapter(pgCommand)
     
            Dim nvLigne As DataRow = dataSetAgent.Tables("agents").NewRow
            nvLigne("id") = idNext
            nvLigne("username") = username
            dataSetAgent.Tables("agents").Rows.Add(nvLigne)
     
            Adaptateur.Update(dataSetAgent, "agents")
     
            dataSetAgent.Clear()
            Try
                Adaptateur.Fill(dataSetAgent, "agents")
            Catch ex As Exception
                Console.WriteLine(ex.Message)
            End Try
            Adaptateur = Nothing
        End Sub
    Quelqu'un pourrait me dire si c'est la meilleur facon svp?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 49
    Points : 85
    Points
    85
    Par défaut
    Faut il renseigner tous les champs dans ma requête?
    Les champs obligatoire sont ceux qui sont not null dans ta base de données.
    que ce soit dans la déclaration du parameters et du dataset?
    Si tu valorise un champ il doit apparaître dans les parameters obligatoirement.

    Pour ce qui est de ton InvalidCastException je verrais bien un champs non valoriser initialisé par défaut à null qui est impossible à convertir vers un entier ou un Boolean, mais je suppose juste je n'utilise jamais les DataSets.

Discussions similaires

  1. [MySQL / JSF] Problème d'insertion dans BDD
    Par randasd dans le forum Autres
    Réponses: 0
    Dernier message: 25/08/2010, 16h46
  2. Problème de restauration de BDD postgres sous AIX 5.3
    Par casasniper dans le forum Installation
    Réponses: 5
    Dernier message: 21/10/2009, 19h16
  3. [MySQL] Problème à l'insertion des données en BDD
    Par carelha dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/11/2006, 14h31
  4. [VB6/mysql]:Problème d'insertion dans une bdd
    Par gaetan.tranvouez dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 14/06/2006, 10h15
  5. [MySQL] Problème double insertion dans BDD
    Par oceane751 dans le forum PHP & Base de données
    Réponses: 34
    Dernier message: 28/12/2005, 00h09

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