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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 16 587 fois - Téléchargée 28 fois

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

Ajouter un commentaire

Commentaires

haccounsoft
Messages postés
18
Date d'inscription
jeudi 17 avril 2003
Statut
Membre
Dernière intervention
30 décembre 2003
-
C 4 Bonne idée que t'as eu de mettre un exemple de liaisons a un fichier Access mé le prob c que t'indiques pas si il faut creer un fichier access pr que ton prog marche et si c le K quelle est la strucutre de la table ?
Voila mé en tt K c qd meme bien sympa de contribuer en fillant des trucs aussi utiles !

PS: Modérateur, dslé pr la langue de Moliere lol
superpa
Messages postés
113
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
5 janvier 2004
-
Très bonne remarque.
Dans ce cas-ci, il faut créer un fichier Access DB.mdb et le placer dans le répertoire de l'executable. La requête portera sur la table contacts, quelqu'en soit la structure (SELECT * FROM Contacts).

Vous pouvez bien entendu modifier le code pour prendre en compte votre bd et votre table. Pour ça changez:

OleDbConnection conn = new OleDbConnection(@"provider=Microsoft.Jet.OLEDB.4.0;Data Source=DB.mdb"); DB.mdb par votre base et son chemin d'accès

OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM Contacts",conn); par votre requête

da.Fill(ds, "Contacts"); contacts par le nom que vous voulez donner à votre dataset.

Si c'est pas assez clair, dites-le
haccounsoft
Messages postés
18
Date d'inscription
jeudi 17 avril 2003
Statut
Membre
Dernière intervention
30 décembre 2003
-
Merci Superpa pour les précisions mais j'ai réussi avant hier soir à me débrouiller en me creusant un petit peu la cervcelle ! :-)
En fin de compte, c'est assez basique.

Par contre, concernant la liaison avec Oracle (liaison local) j'ai bcp de mal .Et Access, il faut le reconnaitre n'est pas ce qu'il y a de mieux pr respecter les contraintes d'intégrité .
Tu as déja essayé ?
superpa
Messages postés
113
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
5 janvier 2004
-
En théorie, il suffit de changer la chaîne de connexion. Mais je n'ai jamais essayer.
Je sais aussi quand dans la version du framework .NET fournie avec VS .NET 2003, il y a un provider optimisé pour Oracle. Faudrait te renseigner

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.