Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 19 sur 19
  1. #1
    Responsable Eclipse et JAVA

    Avatar de Mickael Baron
    Homme Profil pro Mickael BARON
    Ingénieur de Recherche en Informatique
    Inscrit en
    juillet 2005
    Messages
    6 823
    Détails du profil
    Informations personnelles :
    Nom : Homme Mickael BARON
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche en Informatique
    Secteur : Service public

    Informations forums :
    Inscription : juillet 2005
    Messages : 6 823
    Points : 33 974
    Points
    33 974

    Par défaut F.A.Q JDBC - participez ici

    Question: Comment calculer le nombre d'enregistrement d'un ResultSet sans le parcourir en entier et sans faire de requete SELECT COUNT?

    il suffit de définir un ResultSet scrollable, de se positionner sur le dernier élément, d'obtenir son rang et de revenir à la place initiale.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public static int countItem(Connection contact, String query) throws SQLException 
        {
        	Statement stmt = contact.createStatement(    	    	    
                         ResultSet.TYPE_SCROLL_INSENSITIVE,
                         ResultSet.CONCUR_READ_ONLY);
            ResultSet resultset = stmt.executeQuery(query);
        	int nbItem = 0;
        	if (resultset!=null) {
            	resultset.last();
            	nbItem = resultset.getRow();
            	resultset.beforeFirst();
            }
            return nbItem;
        }
    Ingénieur de Recherche en informatique au LIAS / ENSMA
    Responsable des rubriques Eclipse et Java de Developpez.com

    Page de cours : mbaron.developpez.com
    Blog : keulkeul.blogspot.com
    Page Pro : www.lias-lab.fr/members/mickaelbaron
    LinkedIn : www.linkedin.com/in/mbaron
    Twitter : www.twitter.com/mickaelbaron

  2. #2
    En attente de confirmation mail
    Inscrit en
    mars 2003
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : mars 2003
    Messages : 71
    Points : 94
    Points
    94

    Par défaut

    Question:Comment récupérer le type SQL des colonnes d'une table?

    il suffit d'utiliser la méthode getColumnTypeName de l'interface ResultSetMetaData:

    par exemple:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public static void afficheTypeColonne(ResultSet rs) {
    	String nomColonne = null;
    	String type = null;
    	ResultSetMetaData rsmd = rs.getMetaData ();
    	int nbCol = rsmd.getColumnCount ();
    	for (int i = 0; i < nbCol; i++) {
    		nomColonne = rsmd.getColumnLabel(i + 1);
    		type = rsmd.getColumnTypeName(i + 1);
    		System.out.println("Colonne: "+nomColonne+" de type: "+type);
    	}
    }

  3. #3
    Membre éclairé
    Avatar de knotty
    Inscrit en
    mars 2002
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : mars 2002
    Messages : 127
    Points : 360
    Points
    360

    Par défaut

    Je mets dans ce post des urls vers des threads que je trouve interessant. J'updaterai le post au fur et a mesure.

    Ici, bonne question bonne reponse sur hibernate / mysql et autoreconnect

    http://www.developpez.net/forums/viewtopic.php?t=171796
    Christophe Ludet
    Testez vos connaissances Java - http://knotty.developpez.com
    Donner des ailes a votre application (J2EE patterns) - http://knotty.developpez.com/j2ee

  4. #4
    Expert Confirmé Sénior
    Avatar de christopheJ
    Profil pro
    Inscrit en
    avril 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : avril 2004
    Messages : 1 612
    Points : 7 362
    Points
    7 362

    Par défaut F.A.Q JDBC - participez ici

    Vous pouvez participer activement à la F.A.Q JDBC

    N'hésitez pas à poster vos questions et réponses dans cette enfilade.

    Attention Réponse obligatoire, toute question Seule sera supprimée. Il faut poser la question et y répondre.

    Merci à tous pour vos contributions
    Rédacteur - modérateur Java
    Les FAQ Java
    Les cours et tutoriels Java

  5. #5
    duj
    duj est déconnecté
    Membre éprouvé

    Inscrit en
    juillet 2003
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : juillet 2003
    Messages : 142
    Points : 402
    Points
    402

    Par défaut

    Comment se connecter à une base de donnée Access sans devoir au préalable créer un lien odbc ?

    Il suffit d'utiliser l'URL suivant :

    Code :
    jdbc:odbc:;DRIVER=Microsoft Access Driver (*.mdb);DBQ=labase.mdb;
    bien entendu, à la place de labase, mettez le nom complet de votre base (par exemple c:/temp/labse.mdb.


    Voici un exemple complet de code pour obtenir une connection:

    Code :
    1
    2
    3
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
    String url= "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/temp/thebase.mdb"; 
    DBConn = DriverManager.getConnection(url,"","");
    Parfois, Google fait des miracles

  6. #6
    Futur Membre du Club
    Inscrit en
    juillet 2004
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : juillet 2004
    Messages : 49
    Points : 15
    Points
    15

    Par défaut

    Merci tes pratique cette soluce !
    Merite la FAQ :o

  7. #7
    Expert Confirmé
    Avatar de Ioan
    Inscrit en
    juin 2003
    Messages
    738
    Détails du profil
    Informations forums :
    Inscription : juin 2003
    Messages : 738
    Points : 2 861
    Points
    2 861

    Par défaut

    Bonjour à tous,
    Comme vous pouvez le voir sur l'indexe des FAQ Java, la FAQ JDBC est en place. Ce n'est que la troisième, mais d'autres sont déjà en construction
    La FAQ JDBC contient pour le moment 150 questions/réponses. Pour vous y retrouver plus facilement, n'oubliez pas la fonction rechercher.
    Nous travaillons déjà sur sa future mise à jour. En attendant, toutes vos remarques, critiques et propositions sont les bienvenues. Si vous avez des propositions, vous pouvez les faire directement ici (merci duj ). Sinon, pour savoir qui contacter, regardez : Contacts et participations.
    Merci d'avance.
    Cordialement.
    vedaer
    Les FAQs Java, J2EE, JDBC, Struts > Les cours > Le blog de l'équipe Java.
    Merci de respecter les règles du club.
    Mon blog : quelques news sur Java, Linux et le monde de l'Open Source.

  8. #8
    Futur Membre du Club
    Inscrit en
    octobre 2003
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : octobre 2003
    Messages : 34
    Points : 15
    Points
    15

    Par défaut

    JDBC : Comment éviter le problème de DataTruncation survenant très souvent avec le MySQL Connector/J.

    Code :
    1
    2
    3
    4
    5
    6
    7
    Des pertes de précisions,  overflows, ... peuvent avoir lieu quand vous convertissez des valeurs numériques d'un type java vers mysql. Ceci va lever des exceptions, parfois non désirées.
     
    Si vous voulez éviter ces désagréments, vous pouvez affecter la valeur false au paramètre jdbcCompliantTruncation lors de la connexion à MySQL.
     
    Exemple : 
     
    jdbc:mysql://localhost/database?jdbcCompliantTruncation=false
    J'espère que j'aurai pu faire avancer les choses avec ce tips !

  9. #9
    Expert Confirmé Sénior
    Avatar de Baptiste Wicht
    Homme Profil pro Baptiste Wicht
    Étudiant
    Inscrit en
    octobre 2005
    Messages
    7 433
    Détails du profil
    Informations personnelles :
    Nom : Homme Baptiste Wicht
    Âge : 26
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : octobre 2005
    Messages : 7 433
    Points : 19 362
    Points
    19 362

    Par défaut

    Citation Envoyé par guigui5931
    Dans cet article Comment exécuter un Statement ? il y a comme code
    Code :
    1
    2
    3
    4
    5
     
    Statement statement = connection.createStatement();
    boolean result = statement.execute("SELECT * FROM MATABLE");
    ResultSet resultSet = connection.executeQuery("SELECT ATTRIBUT1, ATTRIBUT2  FROM MATABLE");
    int col = statement.executeUpdate("INSERT INTO MATABLE VALUES(15,'bonjour',7.0)");
    il me semble qu'il y a une erreur à la troisième ligne ça devrait être
    Code :
    1
    2
     
    ResultSet resultSet = statement.executeQuery("SELECT ATTRIBUT1, ATTRIBUT2  FROM MATABLE");

  10. #10
    Expert Confirmé Sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    avril 2002
    Messages
    13 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : avril 2002
    Messages : 13 196
    Points : 19 124
    Points
    19 124

    Par défaut

    Salut,


    Dans la Q/R Où trouver les drivers ?


    On donne un lien vers la page : http://servlet.java.sun.com/products/jdbc/drivers
    Mais cette URL n'est apparemment plus valide et nous redirige vers la page d'accueil : http://java.sun.com/


    Il semblerait qu'il faille désormais utiliser l'URL suivante : http://developers.sun.com/product/jdbc/drivers

    a++

  11. #11
    Candidat au titre de Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    mai 2002
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : mai 2002
    Messages : 15
    Points : 10
    Points
    10

    Par défaut

    Comment intégrer directement le contenu d'un fichier Xml dans une base de donnée Oracle .

    exemple de fichier xml
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <root>
       <doc>
           <champ1>..</champ1>
           <champ2>..</champ2>
           ...
       </doc>
       <doc>
    ....
       </doc>
    </root>
    table correspondante
    Code :
    1
    2
    3
    4
    TABLE table1  
      champ1    VARCHAR2 (3)  NOT NULL, 
      champ2    NUMBER, 
      ...
    se procurer la bibliothèque xsu....jar dans le Xml Developpemt Kit for java

    il suffit ensuite d'ouvrir une connexion JDBC, puis d'éxecuter la méthode ad'hoc comme dans l'extrait de code suivant:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    String Url = "jdbc:oracle:thin:@"+IP+":"+PORT+":"+NOM_BASE;
    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
    Connection conn = DriverManager.getConnection(Url, user, pass);
    
    URL urlFic = OracleXMLSave.getURL(ficXml);
    OracleXMLSave oracleXMLSave = new OracleXMLSave(conn, tabName);
    int nb = oracleXMLSave.insertXML(urlFic);
    oracleXMLSave.close();
    
    conn.close();
    Et voila c'est fait .
    La même API fourni la méthode inverse pour constituer un fichier XML à partir d'une simple requete SQL fournie .

    Barny

  12. #12
    Membre du Club Avatar de mitnick2006
    Ingénieur développement logiciels
    Inscrit en
    décembre 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 27

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : décembre 2006
    Messages : 163
    Points : 60
    Points
    60

    Par défaut comment extraire un champ de la base de donnée?

    si on veut par exemple extraire une somme des enregistrements d 'un champ ou le nombre des enregistrements voila la fonction
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    public String get_Word(String value){
    	  ResultSet rs;
    		try {
    			rs=statm.executeQuery(value );
    		   	System.out.println(value);		
    		    rs.next();
    		   	return rs.getString("M");
     
    		} catch (Exception e) { e.printStackTrace();
    	System.out.println("Clsgestion.getWord()	:" +
    							" impossible de touver: " + value );
    						return null;} 
      } 
    ....
    // il faut indiquer le nom du champ par l'aliace 'as M'  
    String s=get_Word("select sum(n_etudiant) AS M from etudiant");

  13. #13
    Membre du Club Avatar de mitnick2006
    Ingénieur développement logiciels
    Inscrit en
    décembre 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 27

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : décembre 2006
    Messages : 163
    Points : 60
    Points
    60

    Par défaut Export & Import base mysql

    je vous propose deux codes pour exporter et importer votre base mysql en java :

    Exportation:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    try{
        Runtime.getRuntime().exec(
    		// 1 - La commande a exécuter (le shell), en séparant les paramètres :
    		new String[] {
    			"cmd.exe", // ou command.com sous Windows 9x
    			"/C",
    			"mysqldump.exe --user=farid --password=farid mabase > C:\\base.sql" },
    		// 2 - Les variables d'environnements (null = hérité du parent)
    		null,
    		// 3 - Le répertoire de travail
    		new File("C:\\Program Files\\EasyPHP1-8\\mysql\\bin\\")
    	);
     
      }catch(IOException e){ System.out.println("erreur"); }
    et pour importer une base mysql depuis un fichier sql voici le code
    Importation:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    try{
     Runtime.getRuntime().exec(
    		new String[] {
    			"cmd.exe", 
    			"/C",
    // il faut remplacer mysqldump par mysql dans le cas d' importation			
    "mysql.exe --user=farid --password=farid mabase < C:\\base.sql" },
    		null,
    		new File("C:\\Program Files\\EasyPHP1-8\\mysql\\bin\\")
    	);
     
      }catch(IOException e){ System.out.println("erreur"); }
    Remarque:
    avant d'importer le fichier sql, il faut d'abord créer une base de donnée vide
    Knoweledge Is Power In Digital World

  14. #14
    Nouveau Membre du Club
    Inscrit en
    octobre 2004
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : octobre 2004
    Messages : 56
    Points : 30
    Points
    30

    Par défaut

    Bonjour, je ne sais pas si ça a sa place dans la FAQ JDBC mais je me lance en espérant qu'il faudra pas trop la remettre en forme :

    comment utiliser une base de donnée ne possédant pas de driver jdbc mais un driver odbc?

    2 solutions :

    - unixodbc a priori uniquement pour les machines unix-likes, cette solution dépends de l'installation de librairie sur le serveur et d'un driver ODBC spécifique a la DB utilisé sur le poste unix (liste ici. Certains drivers sont payants d'autres gratuits, libres ou shareware. Cette solution n'est pas limité a java

    -rmijdbc : cela permet d'utiliser un driver jdbc a travers le réseau même s'il n'est pas prévu pour cela (typiquement: le driver jdbcodbc de sun). Une utilisation possible est de mettre une source odbc sur une machine windows (dans mon cas ms access) et de l'atteindre via le rmijdbc sur le serveur distant et le pont jdbcodbc de Sun sur la machine windows

  15. #15
    Candidat au titre de Membre du Club
    Inscrit en
    janvier 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 26

    Informations forums :
    Inscription : janvier 2008
    Messages : 62
    Points : 12
    Points
    12

    Par défaut

    merci mitnick pour la précision de réponse

  16. #16
    Membre du Club Avatar de mitnick2006
    Ingénieur développement logiciels
    Inscrit en
    décembre 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 27

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : décembre 2006
    Messages : 163
    Points : 60
    Points
    60

    Par défaut Comment savoir si un champ existe dans la base ?

    pour tester si un champ existe dans la base, j ai développé cette fonction qui retourne un boolean .

    Code :
    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
     
    Statement statm;
    ...
    public boolean is_existe(String Sql)
    {
    		ResultSet rs;
    		try {
    			rs=statm.executeQuery(Sql);
     
    		        rs.next();
     
    		       if(rs.getRow()==0) 
                                 return false;
    		       else 
                                 return true;
                        } catch (Exception e) 
                                 { 
                                   e.printStackTrace();
    	                       System.out.println("Cls_base.is_existe()	:" +
    		               " impossible de touver: " +Sql);
    			       return false;
                                  }
    } 
    // notre requête sql peut etre sous la forme :
    // sql= "select "+champ+" from "+table+" where "+filtre+"='"+data+"'";
    Knoweledge Is Power In Digital World

  17. #17
    Membre éclairé
    Profil pro Mickael
    Inscrit en
    mai 2010
    Messages
    247
    Détails du profil
    Informations personnelles :
    Nom : Mickael
    Âge : 26
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : mai 2010
    Messages : 247
    Points : 333
    Points
    333

    Par défaut

    Pas vraiment d'ajout dema part, mais plutôt deux petites erreurs constatés en utilisant la FAQ ces derniers jours :

    Une première ...

    => Chapitre 4, Comment fermer une connection ?
    Code :
    1
    2
    3
    if(connection!=null){try{connection.close()}catch(Exception e){e.printStackTrace();}}
    /* devrait être */
    if(connection!=null){try{connection.close();}catch(Exception e){e.printStackTrace();}}
    et une deuxième erreur dont j'ai vu qu'elle était déja signalé il y a 3 ans....

    Code :
    1
    2
    3
    4
    ResultSet resultSet = connection.executeQuery("SELECT ATTRIBUT1, ATTRIBUT2  FROM MATABLE");
    /* qui devrait être */
    ResultSet resultSet = statement.executeQuery("SELECT ATTRIBUT1, ATTRIBUT2  FROM MATABLE");
    C'est en aidant les autres qu'on en apprend beaucoup soi-même

  18. #18
    Nouveau Membre du Club

    Inscrit en
    octobre 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : octobre 2004
    Messages : 10
    Points : 34
    Points
    34

    Par défaut

    Bonjour,

    Je propose de modifier le dernier point de la F.A.Q. : Comment se connecter à une base de donnée Access sans créer un lien ODBC ?

    En effet, sous Java 64 bits cela ne fonctionne pas...

    Il faut remplacer la ligne
    String url= "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/temp/thebase.mdb";
    par
    String url= "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:/temp/thebase.mdb";

    Et avoir les drivers d'Access 2010 en version 64 bits : Ces driver sont téléchargeables sur le site de Microsoft (Microsoft Access Database Engine 2010 Redistributable [http://www.microsoft.com/en-us/downl...g=en&id=13255]), mais sont incompatibles avec les versions 32 bits de Offices.

    Pour plus d'info, cf. http://www.selikoff.net/2011/07/26/c...n-64-bit-java/

    @+, Ptitom

  19. #19
    Membre éclairé
    Avatar de MasterMbg
    Homme Profil pro Christian Djo Mbangala
    Développeur informatique
    Inscrit en
    octobre 2011
    Messages
    218
    Détails du profil
    Informations personnelles :
    Nom : Homme Christian Djo Mbangala
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : octobre 2011
    Messages : 218
    Points : 394
    Points
    394

    Par défaut Sélectionner les lignes d'une table en utilisant PreparedStatement

    Bonjour à tous,
    il est conseillé d'utiliser PreparedStatement dans les interrogations et les insertions dans des tables des bases de données. Certes, l'interrogation a souvent compliquer. Ci dessous, vous trouverez une petite méthode qui l'utilise sans trop de peines. On exécute la requête à l'aide d'une variable PreparedStatement, et on parcourt le résultat avec un ResultSet.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    public static void selectionner(Connection cn, String table){
    PreparedStatement ps;
    ResultSet rs;
    //Préparer une requête
    ps = cn.prepareStatement("select * from "+table);
    //Exécuter cette dernière
    ps.executeQuery();
    //on récupère le ResultSet du ps et on le passe au rs
    rs = ps.getResultSet();
    //on parcourt rs
    while (rs.next()) {
    /*Traitement des lignes récupérées
        ...........
    */
    }
    //Fermetures
    rs.close();
    ps.close();
    }
    Bonne pratique
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •