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 :

[C#] Faire un INSERT en même temps dans 2 bases differentes


Sujet :

Accès aux données

  1. #1
    Membre régulier Avatar de Pingva
    Profil pro
    Inscrit en
    Août 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 190
    Points : 78
    Points
    78
    Par défaut [C#] Faire un INSERT en même temps dans 2 bases differentes
    Je voudrais pouvoir inserer par deux requetes differentes des données dans deux bases ACCESS diffrerentes.
    Mon code fonctionne, mais si une des deux requetes plante, l'autre est executée quand même, est ça crée des incohérences dans mon programme.
    Je sais que BeguinTrans existe, mais je ne sais pas comment l'appliquer dans mon cas.
    Voici mon 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
    33
    34
    requeteInsererBase="INSERT into UTILISATEUR(ID,NOM,PRENOM) values('"+id+"','"+nom+"','"+prenom+"')";
     
    requeteInsererConnexion="INSERT into CONNEXION (LOGIN,NOM_BASE,MDP) values('"+id+"','"+entreprise+"','"+mdp+"')";
     
    OleDbConnection connexionBase=new OleDbConnection(Class.Connexion.getConnexion(Session["Entreprise"].ToString()));
    OleDbConnection connexionInfopark=new OleDbConnection(Class.Connexion.getConnexion());
     
    OleDbCommand maCommande=new OleDbCommand(requeteInsererBase,connexionBase);
    OleDbCommand maCommande2=new OleDbCommand(requeteInsererConnexion,connexionInfopark);
     
     
    	try
    {
    						connexionBase.Open();
    	connexionInfopark.Open();
     
    						maCommande.ExecuteNonQuery();
    	maCommande2.ExecuteNonQuery();
     
    	}
     
               catch(Exception ex)
    	{
    						lblMessage.Text=ex.Message;
    	}
    	finally
    	{
    	maCommande.Dispose();
    	maCommande2.Dispose();
     
    						connexionBase.Close();
    	connexionInfopark.Close();
     
    	}
    [Balise [code] rajoutée par Abelman]
    [Merci de lire les règles du forum et celles du forum Dotnet avant de poster]

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 266
    Points : 135
    Points
    135
    Par défaut
    tiens la c'est tres bien expliquer

    http://msdn.microsoft.com/library/fr...ctionTopic.asp

  3. #3
    Membre régulier Avatar de Pingva
    Profil pro
    Inscrit en
    Août 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 190
    Points : 78
    Points
    78
    Par défaut
    Merci, c'est vraiment bien expliqué, mais mon probléme que je dois faire 2 connexions a 2 bases differentes. Et dans l'exemple il y a 2 INSERT dans une seule base.
    Merci quand même.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 266
    Points : 135
    Points
    135
    Par défaut
    tu a testé quand meme ???

  5. #5
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 58
    Points : 70
    Points
    70
    Par défaut
    Le propre d'une transaction c'est de s'appliquer à une connexion et pas à deux !!
    Le fait de vouloir garder une intégrité entre 2 bases ne pourra être que source de problèmes...

    Avec sql server on peut ouvrir une connexion sur une base par défaut et executer des requetes sur d'autres base.

    Avec access on peut peut etre essayer de lier les tables de la base de donnée B dans la base de donnée A et executer les 2 requetes dans la base A à l'intérieur de la transaction.

    Si ca marche pas avec les tables liées, on peut peut etre utiliser des requetes appelant les tables liées, et si ca marche vraiment pas avec ADO.NET il faut peut etre essayer avec DAO plus pointu en ce qui concerne les spécificités (étrangetés !?) Access...

  6. #6
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Ne suffit-il pas de faire deux transactions ?

  7. #7
    Membre régulier Avatar de Pingva
    Profil pro
    Inscrit en
    Août 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 190
    Points : 78
    Points
    78
    Par défaut
    Avec access on peut peut etre essayer de lier les tables de la base de donnée B dans la base de donnée A et executer les 2 requetes dans la base A à l'intérieur de la transaction.

    je n'ai pas bien compris, comment lier des tables?
    Si tu pouvais détailler un peu plus, s'il te plait.
    Merci

  8. #8
    Membre régulier Avatar de Pingva
    Profil pro
    Inscrit en
    Août 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 190
    Points : 78
    Points
    78
    Par défaut
    Citation Envoyé par pc152
    Ca marche tres bien, j'ai essayé, à condition qu'on fait la connexion à une seule base.

  9. #9
    Membre régulier Avatar de Pingva
    Profil pro
    Inscrit en
    Août 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 190
    Points : 78
    Points
    78
    Par défaut
    J'ai fait deux transactions, et seulement quand les deus sont OK
    je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    maTransaction_1.Commit();
    						maTransaction_2.Commit();
    Ca a l'air de marcher

    Merci pour tout le monde

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

Discussions similaires

  1. Faire un insert ou un update dans une bdd
    Par Aspic dans le forum Développement de jobs
    Réponses: 9
    Dernier message: 08/07/2010, 18h22
  2. [MySQL] Faire plusieurs requêtes en même temps
    Par johnson95 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 17/02/2010, 15h32
  3. Réponses: 5
    Dernier message: 22/04/2009, 10h24
  4. Réponses: 38
    Dernier message: 26/09/2008, 18h46
  5. Plusieurs requêtes INSERT en même temps
    Par jeyce dans le forum JDBC
    Réponses: 3
    Dernier message: 06/11/2006, 10h42

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