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 :

[ADO.Net][C#]Comment coder une transaction de SqlDA.Update?


Sujet :

Accès aux données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 199
    Points : 96
    Points
    96
    Par défaut [ADO.Net][C#]Comment coder une transaction de SqlDA.Update?
    Slt,


    j'ai un petit soucis avec les transaction sous DotNET, j'ai deux SqlAdapter operant sur deux table differentes. les changement subis par les deux table doivent soit etre accepter en totalité soit etre rejeté. mon code ressemble a ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    BeginTransaction
       SqlAdapterBCommande.Update(...);
       SqlAdapterOccBCommande.Update(...);
    EndTransaction
    mais voila, lors de l'ecxecution une exception est levée me disant que les transaction paralle ne sont pas prise en charge.

    REMARQUE: j'ai relié toutes les SqlCOmmande a une seule instance de SqlTransaction, et j'utilise encore .NET 1.1.

    alors comment doit je m'ipprendre pour avoir des transaction marchant au SqlAdapter.Update. ?

    Merci d'avance pour vos reponse.

  2. #2
    Membre habitué Avatar de del-dongo
    Inscrit en
    Mai 2003
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 147
    Points : 183
    Points
    183
    Par défaut
    peux tu nous mettre ton vrai code car pour moi tu n'as pas fait d'erreurs, il suffit d'attribuer à toutes les commands de chacun de tes sqldataadapters la transaction qui va bien...comme le montre la msdn...

    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
    38
    39
    40
    41
    42
    43
    44
     
       SqlCommandBuilder cbWarehouse = 
          new SqlCommandBuilder(daWarehouse);
       SqlCommand warehouseDelete = cbWarehouse.GetDeleteCommand();
       SqlCommand warehouseInsert = cbWarehouse.GetInsertCommand();
       SqlCommand warehouseUpdate = cbWarehouse.GetUpdateCommand();
     
       SqlCommandBuilder cbSite = new SqlCommandBuilder(daSite);
       SqlCommand siteDelete = cbSite.GetDeleteCommand();
       SqlCommand siteInsert = cbSite.GetInsertCommand();
       SqlCommand siteUpdate = cbSite.GetUpdateCommand();
     
       // Fill the DataSet.
       daWarehouse.Fill(ds, "WarehouseInventory");
       daSite.Fill(ds, "SiteInventory");
     
       // Begin the transaction and enlist the commands.
       SqlTransaction tran = conn.BeginTransaction();
       warehouseDelete.Transaction = tran;
       warehouseInsert.Transaction = tran;
       warehouseUpdate.Transaction = tran;
       siteDelete.Transaction = tran;
       siteInsert.Transaction = tran;
       siteUpdate.Transaction = tran;
     
       // Modify data to move inventory
       // from WarehouseInventory to SiteInventory.
     
       try
       {
          //Execute the commands
          daWarehouse.Update(ds, "WarehouseInventory");
          daSite.Update(ds, "SiteInventory");
     
          //Commit the transaction
          tran.Commit();
       }
       catch(SqlException ex)
       {
          //Roll back the transaction.
          tran.Rollback();
     
          //Additional error handling if needed.
       }
    as tu procédé ainsi...?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 199
    Points : 96
    Points
    96
    Par défaut
    Mes SqlCommand sont rattahcer a des Stored procedure de "SQL SERVER 2000"

    d'accord je vais réessayer, et je te tien au courrant.

    Merci

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 199
    Points : 96
    Points
    96
    Par défaut
    Merci, pour l'aide, en fait l'ordre des orpération doit etre strictement respecté
    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
    try
    {
    	//Ourvir la connexion
    		this.TheSqlConnection.Open();
    	//Relier l'objet XXXConnection a la transaction 
    		this._SqlTransaction =   this.TheSqlConnection.BeginTransaction();
     
    	//Relier Les Objet XXXCommande a l'instance de l'objet XXXTransaction
    		this.sqlDataAdapterBCommande.InsertCommand.Transaction = this._SqlTransaction;
    		this.sqlDataAdapterBCommande.UpdateCommand.Transaction = this._SqlTransaction;
    		this.sqlDataAdapterBCommande.DeleteCommand.Transaction = this._SqlTransaction;
    		this.sqlDataAdapterOccBC.InsertCommand.Transaction = this._SqlTransaction;
    		this.sqlDataAdapterOccBC.UpdateCommand.Transaction = this._SqlTransaction;
    		this.sqlDataAdapterOccBC.DeleteCommand.Transaction = this._SqlTransaction;
    	//Effectuer les Operation que l'on desire
    	...
    	//Valider la Transaction
    		this._SqlTransaction.Commit();
    }
    catch
    {
    	//Annuler la transaction
    	this._SqlTransaction.Rollback();
    }
    Finally
    {
    	//Fermer la Connexion
    	this.TheSqlConnection.Close();
    }
    REMARQUE:
    j'ai fait l'erreur de relier meme les SelectCommand, qui a vue l'apparition d'un message d'erreur Concernant la non prise en charge des transaction parallele

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13
    Points : 15
    Points
    15
    Par défaut
    Wouaou ! (si ca rappelle une pub j y suis pour rien lol)
    J ai pratiquement le meme probleme! mais dans mon code je ne peux pas forcement implementer les transactions dans mes SqlDataAdapter a la suite les unes des autres! est ce que cela poserait un probleme?
    de plus j utilise des SqlDataAdapter types, donc je n ai pas acces aux transactions directement et suis oblige d implementer du code dans la Partial class! y a t il un moyen de faire autrement?

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13
    Points : 15
    Points
    15
    Par défaut
    Ok,
    Aucun probleme pour l ordre des dataAdapters typé! le seul souci(si je puis dire) a ete d implementer les transactions dans la partial class , le code donne ci dessus fonctionne bien ! merci a vous!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/05/2006, 19h36
  2. Réponses: 4
    Dernier message: 05/05/2006, 16h30
  3. [ADO.NET][C#] Comment copier une DataRow d'une DataTable à une autre ?
    Par L`artiste dans le forum Accès aux données
    Réponses: 3
    Dernier message: 29/04/2006, 00h11
  4. [ADO.Net][VB.Net]Comment implementer une Transaction?
    Par mictif dans le forum Accès aux données
    Réponses: 2
    Dernier message: 24/03/2006, 15h41
  5. [ADO.Net][C#] Comment récupérer des infos d'une table SQL ?
    Par lamojuli dans le forum Accès aux données
    Réponses: 2
    Dernier message: 11/01/2006, 16h00

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