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

Windows Forms Discussion :

Update Bdd à partir d'un dataset


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    Par défaut Update Bdd à partir d'un dataset
    Bonjour à tous.

    Je cherche à faire des sauvegardes de base de données et des update de bdd grâce à cette sauvegarde.

    Pour réaliser la sauvegarde je fais ceci :
    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
     
    public void saveBaseToXml(string ConnexionString,string xmlFile)
            {
                DataSet monData = new DataSet();
                monData = getDataSetFromDataBase(ConnexionString);
                saveToXml(monData, xmlFile);
                MessageBox.Show("Enregistrement terminé");
            }
     
    private static DataSet getDataSetFromDataBase(string ConnexionString)
            {
                DataSet monData = new DataSet();
     
                try
                {
                    //on implémente le dataset
                    using (OleDbConnection connection = new OleDbConnection(ConnexionString))
                    {
                        connection.Open();
     
                        string strSQL = @"SELECT * FROM [Article]";
                        OleDbCommand cmd = new OleDbCommand(strSQL, connection);
                        OleDbDataAdapter da = new OleDbDataAdapter(cmd);
                        da.Fill(monData);
                    }
     
                }
                catch(Exception e)
                {
                    MessageBox.Show(@"Erreur lors de la récuperation de la base : "+e.Message);
                }
     
                return monData;
            }
     
    private static void saveToXml(DataSet monData,string xmlFile)
            {
                monData.WriteXml(xmlFile);
            }
    là aucun problème par contre lorsque je fais l'update j'ai cette erreur :
    le format de la chaine d'initialisation n'est pas conforme )à la specification qui débute à l'index 0
    Voici le code pour l'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
     
    public void loadXmlToBase(string ConnexionString, string xmlFile)
            {
                DataSet monData = new DataSet();
                monData = getDataSetFromDataBase(ConnexionString);
                saveToBdd(monData, xmlFile);
                MessageBox.Show("Enregistrement terminé");
            }
     
    private static DataSet getDataSetFromXml(string xmlFile)
            {
                DataSet monData = new DataSet();
     
                monData.ReadXml(xmlFile);
     
                return monData;
            }
     
    private static void saveToBdd(DataSet monData,string ConnexionString)
            {
                try
                {
                    using (SqlConnection connection = new SqlConnection(ConnexionString))
                    {
                        connection.Open();
     
                        SqlDataAdapter daArticle = new SqlDataAdapter("Select * From Article", connection);
                        daArticle.Update(monData,"Article");
     
                    }
                }
                catch (Exception e)
                {
                    MessageBox.Show(@"Erreur lors de l'enregistrement de la base : " + e.Message);
                }
            }
    Si quelqu'un a une piste merci.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 64
    Par défaut
    Il me semble (un vague souvenir :s) que le contenu d'un dataset est toujours envoyer sous forme de string et si ta base de données attend un autre type, ça donne ce genre d'erreur.

    Par contre je n'ai aucune idée de comment contourner le probléme

  3. #3
    Membre Expert
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monData = getDataSetFromDataBase(ConnexionString);
    Pourquoi vas-tu chercher tes infos dans la base de données alors que tu veux la restaurer depuis le fichier XML ?

    Et au niveau des arguments, tu as interverti la chaîne de connexion et le fichier XML.
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    Par défaut
    Citation Envoyé par laedit Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monData = getDataSetFromDataBase(ConnexionString);
    Pourquoi vas-tu chercher tes infos dans la base de données alors que tu veux la restaurer depuis le fichier XML ?

    Et au niveau des arguments, tu as interverti la chaîne de connexion et le fichier XML.
    Oups

    Copier/coller ^^

    Bon avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public void loadXmlToBase(string ConnexionString, string xmlFile)
            {
                DataSet monData = new DataSet();
                monData = getDataSetFromXml(xmlFile);
                saveToBdd(monData, xmlFile);
                MessageBox.Show("Enregistrement terminé");
            }
    Même en corrigeant cette grosse bourde...
    ...j'ai le même message d'erreur

    [edit]

    re oups:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public void loadXmlToBase(string ConnexionString, string xmlFile)
            {
                DataSet monData = new DataSet();
                monData = getDataSetFromXml(xmlFile);
                saveToBdd(monData, ConnexionString);
                MessageBox.Show("Enregistrement terminé");
            }
    Là mon erreur change :
    Update requiert un insertCommande valide lors du passage de la collection datarows avec de nouvelles lignes

  5. #5
    Membre Expert
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Par défaut
    Bizarre, c'est comme si il ne te créait pas d'InsertCommand ou que celui-ci ne correspondrait pas au format que tu as sauvegarder.

    Vérifie ton DataSet et ton DataAdapter lors d'un debug au pas à pas histoire de voir si tout est bien créé et bien paramétré.
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    Par défaut
    Modification 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
     
    private static void saveToBdd(DataSet monData,string ConnexionString)
            {
                string queryString = "Select * from Article";
                try
                {
                    using (OleDbConnection connection = new OleDbConnection(ConnexionString))
                    {
                        connection.Open();
     
                        OleDbDataAdapter daArticle = new OleDbDataAdapter();
                        daArticle.SelectCommand = new OleDbCommand(queryString, connection);
                        OleDbCommandBuilder commandBuilder = new OleDbCommandBuilder(daArticle);
     
                        daArticle.Update(monData.Tables[0]);
                    }
                }
                catch (Exception e)
                {
                    MessageBox.Show(@"Erreur lors de l'enregistrement de la base : " + e.Message);
                }
            }
    Toujours une erreur(sinon se ne serait pas amusant) :
    DataColmun 'Prix' manquant pour DataTable 'Article' pour SourceColumn 'Prix'
    Ce que je ne comprend pas trop c'est que le xml représente une sauvegarde de cette même base , il ne devrait pas y avoir de différence.

    [edit]

    et si je rajoute la colonne direct dans le xml j'ai une autre erreur car comme l'a dit Arsou pour le Dataset tout est en string alors que j'ai besoin de mettre à jour du decimal.

    Quelqu'un aurait il donc une piste pour la colonne qui ne se met pas en Xml?
    Ou bien le fait que bien qu'elle ne se mette pas cela ne gêne pas l'update.

    Et/ou une piste pour que les types du dataset ne gêne pas?

    Merci.

Discussions similaires

  1. [MySQL] UPDATE bdd à partir liste ou fichier, comment faire ?
    Par gestgm dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 30/08/2010, 16h48
  2. Updater une BDD à partir d'une DataGridView
    Par casavba dans le forum Windows Forms
    Réponses: 1
    Dernier message: 09/12/2007, 23h27
  3. [CSV] Update BDD à partir de fichier xls ou csv
    Par masseur dans le forum Langage
    Réponses: 2
    Dernier message: 03/07/2007, 14h51
  4. [ADO.NET] MAJ BDD à partir d'un DataSet d'un DataGrid
    Par bart64 dans le forum Accès aux données
    Réponses: 15
    Dernier message: 20/12/2005, 18h16
  5. UPDATE : table à partir d'une autre
    Par Laura dans le forum Requêtes
    Réponses: 2
    Dernier message: 28/10/2003, 21h34

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