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

C# Discussion :

Cherche exemple pour lire / mettre à jour une base de données via ODBC


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 346
    Par défaut Cherche exemple pour lire / mettre à jour une base de données via ODBC
    Bonjour,

    J'ai lu pas mal de docs et d'articles sur la façon de récupérer et mettre à jour des données en utilisant les datasets. Je n'arrive pas encore à faire ce dont j'ai besoin.

    Je cherche donc un code source pas trop compliqué qui montre comment récupérer des données et les mettre à jour en utilisant un dataset comprenant plusieurs tables.

    J'arrive à récupérer les données sans problème, en remplissant mon dataset avec plusieurs tables. Mais je n'arrive pas à mettre à jour ces tables (la première oui, les autres non).

    Si vous savez où je peux trouver cela, n'hésitez pas à m'en faire part ;-) (les sources dispo sur ce site datent de 2004 et pas grand chose sur les bases de données :-/).

    Bonne journée

  2. #2
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    tu as quoi comme base de données? c'est désiré d'utiliser ODBC plutot qu'un provider plus performant?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 346
    Par défaut
    J'utilise postgreSQL... Jusqu'à maintenant, j'utilisais le pilote odbc de postgresql en VB6 sans soucis... cependant, la notion de dataset est nouvelle pour moi.

  4. #4
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    ce n'est pas le dataset qui va mettre à jour ta base mais ton (tes) dataaptateur.
    ensuite, il y a effectivement plein de tutos sur le net mais qui ne prennent qu'une table à updater. il te faut donc nous donner plus d'infos, du code, pour que l'on puisse t'aider.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 346
    Par défaut
    Bonjour,

    j'espère que ma réponse n'arrive pas trop tard :

    J'essaie effectivement d'utiliser le dataadapter pour la mise à jour mais ça ne fonctionne que sur la première table (la principale) et pas sur la deuxieme. C'est justement un exemple gérant plusieurs tables avec des relations qu'il me manque pour, je pense, bien comprendre ce qu'il faut faire.

    La mise à jour de mon second datadapter renvoie une erreur de ma base de données (une colonne nulle) mais cette erreur n'a pas de sens sur la requete qui aurait dû être envoyée. Je pense donc que ce n'est pas la bonne requête qui est utilisée par la méthode update().

    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
     
    dataAdapterTable1 = new OdbcDataAdapter(
      "SELECT id,refTable2, refTable3, reference FROM table1 WHERE id="
      + id, (OdbcConnection)BDD.cnx);
     
    dataAdapterTable1 .Fill(dataset, "table1");
     
    dataAdapterTable2 = new OdbcDataAdapter(
      "SELECT p.id AS pid,p.titre,p.nom FROM table2 AS p WHERE id=" +
      dataset.Tables["table1"].Rows[0]["refTable2"].ToString(),
      (OdbcConnection)BDD.cnx);
     
    dataAdapterTable3 = new OdbcDataAdapter(
      "SELECT b.id AS id,b.refTable3,b.nature FROM table3 AS b WHERE id=" +
      dataset.Tables["table1"].Rows[0]["refTable3"].ToString(),
      (OdbcConnection)BDD.cnx);
     
     
    // Requetes d'update :
    dataAdapterTable1.UpdateCommand = new OdbcCommand(
      "UPDATE table1 SET reference = ? WHERE id="
      + id, (OdbcConnection)BDD.cnx);
     
    dataAdapterTable1.UpdateCommand.Parameters.Add(
      "@reference", OdbcType.VarChar, TAILLE_COL_REFERENCE, "reference");
     
     
    dataAdapterTable3.UpdateCommand = new OdbcCommand(
      "UPDATE table3 SET refTable3 = ?, nature = ? WHERE id = " 
      + dataset.Tables["table1"].Rows[0]["refTable3"].ToString(),
      (OdbcConnection)BDD.cnx);
     
                    dataAdapterTable1.UpdateCommand.Parameters.Add(
      "@refTable3", OdbcType.VarChar, TAILLE_COL_REF_TABLE3, "refTable3");
     
    dataAdapterTable1.UpdateCommand.Parameters.Add(
    "@nature", OdbcType.VarChar, TAILLE_COL_NATURE, "nature");
    Puis, lors de l'enregistrement des changements :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dataAdapterTable1.Update(dataset, "table1");
    dataAdapterTable1.Update(dataset, "table3");
    ERROR [23502] ERREUR: une valeur NULL viole la contrainte NOT NULL de la colonne « reference »;

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/04/2008, 11h28
  2. Comment mettre à jour une base de données access
    Par nicolas2603 dans le forum VB.NET
    Réponses: 11
    Dernier message: 16/10/2007, 14h40
  3. Réponses: 2
    Dernier message: 27/04/2007, 13h45
  4. Réponses: 1
    Dernier message: 15/09/2006, 11h24
  5. [SQL SERVER] Mettre à jour une base de donnée
    Par grellierj dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 24/05/2006, 11h33

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