Sauvegarde d'une requete mySQL en CSV [Résolu]

Messages postés
92
Date d'inscription
mercredi 4 décembre 2002
Dernière intervention
18 mai 2018
- 22 mars 2018 à 13:24 - Dernière réponse :
Messages postés
92
Date d'inscription
mercredi 4 décembre 2002
Dernière intervention
18 mai 2018
- 27 mars 2018 à 08:42
Bonjour,

J'utilise le lecteur multimédia Kodi si vous connaissez. Il est configuré pour utilisé une base de donnée MySQL. Je tente d'exporter mes films dans un fichier CSV.

Je reprend la programmation après l'avoir arrêter sous Delphi.

J'arrive à envoyer une requête au serveur mais il ne sauvegarde pas dans un fichier, pas d'erreur par contre. Je pense que je dois pas sauvegarder directement depuis la requête
cn = new MySqlConnection("SERVER=" + Properties.Settings.Default.Sadresse + ";PORT=" + Properties.Settings.Default.Sport + ";DATABASE=myvideos107;UID=" + Properties.Settings.Default.Sutilisateur + ";PWD=" + Properties.Settings.Default.Spasse + ";");
 
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();
            saveFileDialog1.Filter = "Fichier csv|*.csv";
            saveFileDialog1.Title = "Sauvegarde de la liste de film";
            saveFileDialog1.ShowDialog();
            string emplacement = saveFileDialog1.FileName;
            emplacement=emplacement.Replace("\\", "\\\\");
            string chainedesav= "SELECT b.c00";
            if (cannee.Checked)
                chainedesav = chainedesav + ", b.premiered";
            if (cemplacement.Checked)
                chainedesav = chainedesav + " , b.c22";
            if (cnom.Checked)
                chainedesav = chainedesav + ", a.strFilename";
            if (Cgenre.Checked)
                chainedesav = chainedesav + ", b.c14";
            if (cajout.Checked)
                chainedesav = chainedesav + ", a.dateAdded ";
            chainedesav = chainedesav + " INTO OUTFILE '";
 
            if (saveFileDialog1.FileName != "")
            { chainedesav = chainedesav + emplacement;
                chainedesav = chainedesav + "' FROM files AS a, movie AS b WHERE a.idFile = b.idFile;";
                
             }
//pour verifier la requete
                MessageBox.Show(chainedesav);
 
 
               if (cn.State == ConnectionState.Open)
                {
                    cn.Close();
 
                }
                cn.Open();
          
 
                MySqlCommand requete = new MySqlCommand(@chainedesav);

 
                requete.Connection = cn;
                MySqlDataReader reader = requete.ExecuteReader();
 
   


EDIT : Ajout des balises de code


Afficher la suite 

Votre réponse

7 réponses

Messages postés
23246
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2018
- 22 mars 2018 à 14:25
0
Merci
Bonjour,

Je vois bien la connexion à ta bdd ....
La préparation d'un fichier CSV
La requête qui doit te lister le contenu à sauvegarder ....
Mais.... ensuite ? Tu as instancié un "reader" ... il faut donc t'en servir (boucler dessus ) pour lire le résultat de la requête puis le mettre dans ton fichier....
Sinon c'est normal que ça ne marche pas.
Messages postés
92
Date d'inscription
mercredi 4 décembre 2002
Dernière intervention
18 mai 2018
- 22 mars 2018 à 14:29
Je debute en SQL et j'ai des souvenirs de programmations :-) alors j'ai du oublié quelque chose... la requete fonctionne en local car elle intégre l'enregistrement en CSV, je pensais donc que cela fonctionnerait pareil...
des idées ?
Messages postés
23246
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2018
>
Messages postés
92
Date d'inscription
mercredi 4 décembre 2002
Dernière intervention
18 mai 2018
- 22 mars 2018 à 15:50

des idées ?

Ben... tu peux essayer de dire "Abracadabra" pour voir ... :-)
SInon....pas plus que la réponse déjà donnée....

Tu as instancié un "reader" ... il faut donc t'en servir (boucler dessus ) pour lire le résultat de la requête puis le mettre dans ton fichier....


Pour boucler :
//Read the data and store them in the list
 while (dataReader.Read())
 {
    // ici ton code pour ajouter les lignes à ton csv
  //--------
}


//close Data Reader
   dataReader.Close();
Commenter la réponse de jordane45
Messages postés
92
Date d'inscription
mercredi 4 décembre 2002
Dernière intervention
18 mai 2018
- 22 mars 2018 à 16:15
0
Merci
Merci Jordane45 pour ta réponse, je regarde ce soir je suis au travail :-(
Commenter la réponse de Rapakooti
Messages postés
92
Date d'inscription
mercredi 4 décembre 2002
Dernière intervention
18 mai 2018
- 27 mars 2018 à 00:01
0
Merci
voila la réponse

          MySqlCommand requete = new MySqlCommand(@chainedesav);


requete.Connection = cn;
MySqlDataReader reader = requete.ExecuteReader();


while (reader.Read()) // on va parcourir l'ensemble des lignes du dataReader
{

for (int m = 0; m < reader.FieldCount; m++) // on parcours la ligne courante du dataReader
{
csv += reader[m].ToString()+";";
}
csv += "\r\n";


}





File.WriteAllText(emplacement, csv);
reader.Close();
this.Close();

Messages postés
23246
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2018
- 27 mars 2018 à 00:28
Ben voila... tu as utilisé le reader pour boucler dessus.
Parfait.
Bon courage pour la suite.
Messages postés
92
Date d'inscription
mercredi 4 décembre 2002
Dernière intervention
18 mai 2018
- 27 mars 2018 à 08:42
Euh j'ai déjà reposé une question, c 'est pas forcément des points que j'ai l'habitude de faire. :-)
Commenter la réponse de Rapakooti

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.