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

Rapakooti 92 Messages postés mercredi 4 décembre 2002Date d'inscription 18 mai 2018 Dernière intervention - 22 mars 2018 à 13:24 - Dernière réponse : Rapakooti 92 Messages postés mercredi 4 décembre 2002Date d'inscription 18 mai 2018 Dernière intervention
- 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

jordane45 21038 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 mai 2018 Dernière intervention - 22 mars 2018 à 14:25
0
Utile
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.
Rapakooti 92 Messages postés mercredi 4 décembre 2002Date d'inscription 18 mai 2018 Dernière intervention - 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 ?
jordane45 21038 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 mai 2018 Dernière intervention > Rapakooti 92 Messages postés mercredi 4 décembre 2002Date d'inscription 18 mai 2018 Dernière intervention - 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
Rapakooti 92 Messages postés mercredi 4 décembre 2002Date d'inscription 18 mai 2018 Dernière intervention - 22 mars 2018 à 16:15
0
Utile
Merci Jordane45 pour ta réponse, je regarde ce soir je suis au travail :-(
Commenter la réponse de Rapakooti
Rapakooti 92 Messages postés mercredi 4 décembre 2002Date d'inscription 18 mai 2018 Dernière intervention - 27 mars 2018 à 00:01
0
Utile
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();

jordane45 21038 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 mai 2018 Dernière intervention - 27 mars 2018 à 00:28
Ben voila... tu as utilisé le reader pour boucler dessus.
Parfait.
Bon courage pour la suite.
Rapakooti 92 Messages postés mercredi 4 décembre 2002Date d'inscription 18 mai 2018 Dernière intervention - 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.