Base de donnée et fichier

fredo -  
 missour -
Bsr

quelqu'un a t'il une solution j'au un fichier text et je voudrais comparer les elements de ce fichier avec une table dont les element sont des string quelqu'un a t'il une solution merci.
En java c'est cool

2 réponses

  1. HackTrack
     
    Voilà une solution possible.
    J'ai créé un DB Access. Elle ne contient qu'une seule table appelée "DataTable". Cette table contient 2 colonnes: "id" qui contient des int, et "value" qui contient des String (les String à comparer avec le contenu du fichier texte).
    Le DSN de la DB est "TestDB" (pas oublier de le configurer dans ODBC Data Sources!!!).

    Cette classe (plus précisément la méthode check()) te permet de comparer chaque mot du fichier texte avec les String contenus dans la DB. Une fois qu'un mot du fichier texte est trouvé dans la DB, ce mot est ajouté à une ArrayList, aisément consultable par la suite.

    Assez parlé voici le code source:

    import java.util.*;
    import java.io.*;
    import java.sql.*;

    /**
    *@author HackTrack
    *@created March 11, 2002
    *@version 1.0
    */

    public class StringChecker {

    public StringChecker() {
    }

    public ArrayList check(String textFilePath, String dsn) {
    ArrayList checkResult = new ArrayList();
    try {
    StringBuffer text = getTextFromFile(textFilePath);
    //On stocke tous les mots du fichier dans une liste
    ArrayList foundWords = foundWords = parse(text);
    //On établit une connection vers la DB
    Connection conn = getConnection(dsn);
    Statement s = conn.createStatement();

    Iterator it = foundWords.iterator();
    ResultSet rs;
    while(it.hasNext()) {
    //On récupère les mots de la liste un par un
    String word = (String)it.next();
    //On construit la requête SQL
    String sqlQuery = "SELECT * FROM DataTable WHERE value='" + word + "'";
    //On exécute la requête SQL
    rs = s.executeQuery(sqlQuery);
    //Si le résultat de la requête n'est pas nul, on stocke le mot pour
    // lequel une concordance a été trouvée dans une ArrayList.
    while(rs.next()) {
    checkResult.add(word);
    break;
    }
    }
    conn.close();
    }
    catch(SQLException sqle) {
    System.out.println("SQL exception occured");
    }
    return checkResult;
    }

    private StringBuffer getTextFromFile(String filePath) {
    StringBuffer textBuffer = new StringBuffer();
    try {
    //On crée un BufferedReader qui va permettre de lire, ligne par ligne,
    // le texte contenu dans le fichier. On stocke le contenu du fichier
    // dans un StringBuffer.
    BufferedReader reader = new BufferedReader(new FileReader(filePath));

    String textLine = "";
    while((textLine = reader.readLine()) != null) {
    textBuffer.append(textLine);
    }
    reader.close();
    }
    catch(IOException ioe) {
    System.out.println("IOException occured");
    }
    return textBuffer;
    }

    private Connection getConnection(String dsn) throws SQLException {
    Connection conn = null;
    try {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    conn = DriverManager.getConnection("jdbc:odbc:" + dsn, "", "");
    }
    catch(ClassNotFoundException cnfe) {
    System.out.println("Class not found");
    }

    return conn;
    }

    private ArrayList parse(StringBuffer textToCheck) {
    ArrayList foundWords = new ArrayList();
    StringTokenizer tokenizer = new StringTokenizer(textToCheck.toString(), " ");
    //On parse le texte du fichier pour en récupérer chaque mot et stocker ces
    // mots dans une ArrayList
    while(tokenizer.hasMoreTokens()) {
    String aWord = tokenizer.nextToken();
    if(!foundWords.contains(aWord)) {
    foundWords.add(aWord);
    }
    }
    return foundWords;
    }

    public static void main(String args[]) {
    StringChecker checker = new StringChecker();
    String filePath = "C:/Temp/checker.txt";//Ce fichier contient le texte à comparer
    String dsn = "TestDB";
    ArrayList foundWords = checker.check(filePath, dsn);
    // Affichage des occurences trouvées
    // La ArrayList contient tous les mots du fichier texte pour lesquels une (ou
    // plusieurs occurences) ont été trouvées dans la DB
    Iterator it = foundWords.iterator();

    while(it.hasNext()) {
    String word = (String)it.next();
    System.out.println("Le mot " + word + " (issu du fichier texte) a été trouvé dans la DB");
    }
    }
    }

    ... en espérant que cela répond à ta question.

    ;-)
    HackTrack
    0
    1. belle_mannou Messages postés 4 Statut Membre
       
      je veut récupérer des donnés a partir de fichier texte et le mettre dans une base de donnés est ce que vous pouvez m'aidez
      voila un exemple de contenu de mon fichier

      [1;34mICMPPacket: echo request, 192.168.100.117 -> 192.168.100.2 l=4,36]
      je veut savoir comment extraire chaque attribut et le mettre dans ma base de donné
      aidez moi s'il vous plait! mannou
      -1
      1. missour > belle_mannou Messages postés 4 Statut Membre
         
        svp tu peux me guider de faire l'inverser si par exemple j ai une base de données et je veux la convertir au ficher texte
        comment faire avec sql-server???????????????????????????????????????
        0
  2. fredo
     
    mais le principe est cool

    je vais plustot utiliser Mysql

    merci mon pote
    0