Génération d'un fichier texte à partir d'une base de données

Contenu du snippet

Crée un fichier texte sous la forme d'un tableau à partir d'une base de donnée access.

Source / Exemple :


using System;
using System.Data;
using System.Data.OleDb;
using System.IO;

namespace FromDBToTxt
{
  class FromDBToTxt
  {
    [STAThread]
    static void Main(string[] args)
    {
      try
      {
        Console.WriteLine("Connexion a la bd");
        OleDbConnection conn = new OleDbConnection(@"provider=Microsoft.Jet.OLEDB.4.0;Data Source=DB.mdb");
        Console.WriteLine("Execution de la commande");
        OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM Contacts",conn);
                
        DataSet ds = new DataSet("Ensemble des contacts");
        da.Fill(ds, "Contacts");

        Console.WriteLine("Creation du fichier txt");
        
        FileStream fileStream = new System.IO.FileStream(@"c:\contacts.txt",System.IO.FileMode.Create);
        StreamWriter sw = new StreamWriter(fileStream);

        Console.WriteLine("Creation des en-têtes");
        foreach (DataColumn col in ds.Tables["Contacts"].Columns)
        {
          sw.Write(col.ColumnName);
          sw.Write("\t");
        }
        sw.Write(sw.NewLine);
        
        Console.WriteLine("Ajout des données");
        foreach(DataRow row in ds.Tables["Contacts"].Rows)
        {
          int cnt = ds.Tables["Contacts"].Columns.Count;
          for(int i = 0; i < cnt; i++)
          {
            sw.Write(row[i]);
            sw.Write("\t");
          }
          sw.Write(sw.NewLine);
        }

        Console.WriteLine("Ecriture terminée");
        sw.Close();
        conn.Close();
      }
      catch(Exception exc)
      {
        Console.WriteLine(exc.Message);
      }
    }
  }
}

Conclusion :


Ce code n'est certainnement pas parfait: il peut y avoir un problème d'alignement, si la taille des champs dépasse la taille d'une tabulation. Il est évidemment possible de changer celà, si ça vous intéresse.

A voir également

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.