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

JDBC Java Discussion :

Participez à la FAQ JDBC [FAQ]


Sujet :

JDBC Java

  1. #1
    Rédacteur

    Avatar de Mickael Baron
    Homme Profil pro
    Ingénieur de Recherche en Informatique
    Inscrit en
    Juillet 2005
    Messages
    14 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 14 974
    Points : 72 948
    Points
    72 948
    Par défaut Participez à la FAQ JDBC
    Bonjour,

    La FAQ JDBC est ouverte à tous, vous pouvez donc y participer activement. Soit vous pouvez poster vos questions et réponses dans cette enfilade, soit vous pouvez utiliser l'application collaborative d'édition de FAQ.

    L'adresse de la FAQ : http://java.developpez.com/faq/jdbc/

    Merci à tous pour vos contributions.

    L'équipe Java

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 34
    Points : 32
    Points
    32
    Par défaut
    JDBC : Comment éviter le problème de DataTruncation survenant très souvent avec le MySQL Connector/J.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  3. #3
    Membre à l'essai
    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 : 16
    Points
    16
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <root>
       <doc>
           <champ1>..</champ1>
           <champ2>..</champ2>
           ...
       </doc>
       <doc>
    ....
       </doc>
    </root>
    table correspondante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Membre régulier Avatar de mitnick2006
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 163
    Points : 106
    Points
    106
    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 : 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
     
    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");

  5. #5
    Membre régulier Avatar de mitnick2006
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 163
    Points : 106
    Points
    106
    Par défaut Export & Import base mysql
    je vous propose deux codes pour exporter et importer votre base mysql en java :

    Exportation:
    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
     
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 56
    Points : 49
    Points
    49
    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

  7. #7
    Membre régulier Avatar de mitnick2006
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 163
    Points : 106
    Points
    106
    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 : 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
     
    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+"'";

  8. #8
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

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

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    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 : 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
     
    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

Discussions similaires

  1. Participez à la FAQ Struts
    Par Mickael Baron dans le forum Struts 1
    Réponses: 3
    Dernier message: 05/04/2007, 23h00
  2. [Participez à la FAQ !] La question de la semaine
    Par Giovanny Temgoua dans le forum Langage
    Réponses: 18
    Dernier message: 13/12/2005, 10h58
  3. Participez à la FAQ Java EE
    Par Mickael Baron dans le forum Java EE
    Réponses: 1
    Dernier message: 28/08/2003, 12h49

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