IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Problème dans la boucle for


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 35
    Par défaut Problème dans la boucle for
    Bonjour,

    Mon code ci dessous permet de parcourir une BDD MySQL et en extraire les données. Quand j'ai fait des affichages pour le test j'ai vu qu'il s'arrête à la 1ère table à la 1ère ligne (plus précisément dans la boucle for) il la parcourt une fois.

    J'ai beau essayer de remédier à ce problème mais ça ne marche toujours pas, avez vous une idée sur ce que ça pourrai être????

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    import java.io.File;
    import java.sql.Connection;
    import java.sql.DatabaseMetaData;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.ParserConfigurationException;
    import javax.xml.transform.Result;
    import javax.xml.transform.Source;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerConfigurationException;
    import javax.xml.transform.TransformerException;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.dom.DOMSource;
    import javax.xml.transform.stream.StreamResult;
    
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    
    public class DBSyncTools {
    	private Connection conn;
    	private Document doc;
    
    	public DBSyncTools(String driverName, String serverName,
    			String dataBaseName, String userName, String passWord)
    			throws ClassNotFoundException, SQLException,
    			ParserConfigurationException {
    
    		conn = ConnectionFactoryImpl.createConnection(serverName, dataBaseName,
    				userName, passWord, driverName);
    		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    		DocumentBuilder builder = factory.newDocumentBuilder();
    		doc = builder.newDocument();
    
    	}
    
    	public Document save() throws SQLException, ParserConfigurationException {
    		try {
    			Statement stmt;
    			ResultSet rs;
    			ResultSetMetaData rsmd;
    			int colCount = 0;
    
    			DatabaseMetaData dbmd = conn.getMetaData();
    			String[] types = { "TABLE" };
    			ResultSet resultSet = dbmd.getTables(null, null, "%", types);
    
    			Element db = doc.createElement("DB");
    			doc.appendChild(db);
    
    			while (resultSet.next()) {
    				String tableName = resultSet.getString(3);
    				System.out.println(tableName);
    				// Table
    				Element tab = doc.createElement("Table");
    				tab.setAttribute("name", tableName);
    				db.appendChild(tab);
    
    				stmt = conn.createStatement();
    				rs = stmt.executeQuery("select * from " + tableName);
    				rsmd = rs.getMetaData();
    				colCount = rsmd.getColumnCount();
    				int countRows = 0;
    				while (rs.next()) {
    					Element row = doc.createElement("Row");
    					tab.appendChild(row);
    					
    					for (int i = 1; i <= colCount; i++)
    					{
    						String columnName = rsmd.getColumnName(i);
    						Object value = rs.getObject(i);
    						Element node = doc.createElement(columnName);
    						node.appendChild(doc.createTextNode(value.toString()));
    						row.appendChild(node);
    						System.out.println(columnName);
    					}
    					countRows++;
    					System.out.println("Ligne: "+countRows);
    				}
    				System.out.println("Somme des lignes: "+countRows);
    				rs.close();
    				stmt.close();
    			}
    
    			resultSet.close();
    			// writeXmlFile(doc,"data.xml");
    
    		} catch (SQLException e) {
    		}
    		System.out.println(doc);
    		return doc;
    
    	}
    
    	/*
    	 * private void writeXmlFile(Document doc, String filename) { try { Source
    	 * source = new DOMSource(doc); File file = new File(filename); Result
    	 * result = new StreamResult(file); Transformer xformer =
    	 * TransformerFactory.newInstance() .newTransformer();
    	 * xformer.transform(source, result); } catch
    	 * (TransformerConfigurationException e) { } catch (TransformerException e)
    	 * { } }
    	 */
    
    	public static void main(String args[]) {
    		try {
    
    			DBSyncTools myDB = new DBSyncTools("MySql", "localhost", "prorion",
    					"root", "root");
    			myDB.save();
    		} catch (ClassNotFoundException e) {
    			System.out.println(e.getMessage());
    		} catch (SQLException e) {
    			System.out.println(e.getMessage());
    		} catch (ParserConfigurationException e) {
    			System.out.println(e.getMessage());
    		}
    
    	}
    
    }
    Bien à vous

  2. #2
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    Quelle est la valeur affichee par cette ligne?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("Somme des lignes: "+countRows);

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 35
    Par défaut
    Le nombre des lignes de chaques table si je met la boucle for et son contenu en commentaire,

    et elle ne s'affiche même pas si je la garde,

    Je l'ai mise d'ailleurs pour pouvoir tester jusque où le code s'exécute

  4. #4
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    J'ai mis ton morceau de code dans une procedure (pour une seule table) et ca marche


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
      public Bug(Connection connection, String myTable) throws Exception {
     
        int colCount = 0;
        int rowCount = 0;
        ResultSetMetaData rsmd;
        Statement stmt;
        stmt = connection.createStatement();
        ResultSet rs = stmt.executeQuery("Select * from " + myTable);
        rsmd = rs.getMetaData();
        colCount = rsmd.getColumnCount();
        while (rs.next()) {
          StringBuilder sb = new StringBuilder();
          sb.append("|");
          for (int i = 1; i <= colCount; i++) {
            sb.append(rsmd.getColumnName(i)).append(":").append(rs.getObject(i)).append("|");
          }
          System.out.println(sb);
          rowCount++;
        }
        System.out.println(rowCount);
      }

Discussions similaires

  1. [XL-2007] Problème dans une boucle For..Next
    Par robby98800 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/06/2012, 07h48
  2. Problème dans la boucle FOR
    Par zizou85 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 25/07/2011, 16h46
  3. [XL-2003] Problème dans la boucle for
    Par neninio31 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/07/2009, 17h51
  4. [Embedded Function] Problème dans une boucle FOR-END
    Par roilait dans le forum Simulink
    Réponses: 6
    Dernier message: 19/04/2008, 14h55
  5. Problème avec une DLL dans une boucle For
    Par BraDim dans le forum Langage
    Réponses: 5
    Dernier message: 20/09/2005, 12h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo