Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2814 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  driver MySql

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

driver MySql

n°714987
hermes84
Posté le 04-05-2004 à 10:18:40  profilanswer
 

bonjour,
 
j'essaie de me connecter a une base de donnees MySql en local. Je pense avoir correctement incorporé la bibliotheque (mysql-connector-java-3.0.11-stable-bin.jar) dans le projet mais quand j'execute en pas à pas, je tombe dans une classe NonRegisteringDriver...
Le code que j'utilise, je l'ai repris sur le site et je ne pense pas qu'il y ai de problemes...
Le truc c'est qu'il y en a un, mais quoi?
 
Class.forName("org.gjt.mm.mysql.Driver" ).newInstance();
String url = "jdbc:mysql://localhost:3306/table";
String user = "user";
String password = "pass";
Connection con = DriverManager.getConnection(url,user,password);
 
si qqun peut maider...merci d'avance.
hermes(84).

mood
Publicité
Posté le 04-05-2004 à 10:18:40  profilanswer
 

n°715001
benou
Posté le 04-05-2004 à 10:29:59  profilanswer
 

tu te trompe de driver : le driver que tu utilises utilise la classe 'com.mysql.jdbc.Driver', comme c'est marqué dans la documentation : http://dev.mysql.com/doc/connector/j/en/#id2801034
 
Remarque : ton newInstance() ne sert à rien.


---------------
ma vie, mon oeuvre - HomePlayer
n°715188
hermes84
Posté le 04-05-2004 à 12:56:55  profilanswer
 

j'ai deja essayer...j'ai changer de librairie, j'ai tout essayer et rien...je suis donc revenu a la librairie :
mysql-connector-java-3.0.11-stable-bin et je sais plus quoi faire...
 
j'ai tjs le code :
 
    try {
      //etablissement de la connexion
      Class.forName("com.mysql.jdbc.Driver" );
      String user = "test";
      String password = "test";
      String url = "jdbc:mysql://localhost:3306/crm";
 
      Connection con = DriverManager.getConnection(url,user,password);
 
      //fermeture de la connexion
      con.close();
      //fin du try
      return true;
    }
    catch (Exception e) {
      e.getStackTrace();
      return false;
    }
 
mais pas moyen: en pas a pas je tombe tjs sur la class NonRegisteringDriver, et le truc c'est ke je suis bloque sur un commentaire quand je passe sur la fonction driverManager.getconnection(...). je comprend rien...et ca commence a me prendre la tete surtout ke je suis obligé d'utiliser ce genre de base...
si qqun peut me renseigner je suis en attente d'un sauveur!
merci tout de meme.
Hermes(84)

n°715244
benou
Posté le 04-05-2004 à 14:11:45  profilanswer
 

c'est quoi ton histoire de classe NonRegisteringDriver ?
 
Donne nous le message d'erreur ...


---------------
ma vie, mon oeuvre - HomePlayer
n°715293
hermes84
Posté le 04-05-2004 à 14:56:34  profilanswer
 

en fait ya pas de message d'erreur, qd je le lance normalement il "rame" un peu et n'affiche rien et qd je le lance en mode debug, qd j'arrive sur la ligne :
Connection con = DriverManager.getConnection(url,user,password);
il "saute" dans la classe:
 
// JBuilder API Decompiler stub source generated from class file
// 4 mai 2004
// -- implementation of methods is not available
 
package com.mysql.jdbc;
 
// Imports
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverPropertyInfo;
import java.sql.SQLException;
import java.util.Properties;
 
public class NonRegisteringDriver implements Driver {
 
  // Fields
  public static final boolean DEBUG = false;
  public static final boolean TRACE = false;
 
  // Constructors
  public NonRegisteringDriver() throws SQLException { }
 
  // Methods
  public int getMajorVersion() { return 0;}
  public int getMinorVersion() { return 0;}
  public DriverPropertyInfo[] getPropertyInfo(String url, Properties info) throws SQLException { return null;}
  public boolean acceptsURL(String url) throws SQLException { return false;}
  public Connection connect(String url, Properties info) throws SQLException { return null;}
  public String database(Properties props) { return null;}
  public String host(Properties props) { return null;}
  public boolean jdbcCompliant() { return false;}
  public int port(Properties props) { return 0;}
  public String property(String name, Properties props) { return null;}
  static int getMajorVersionInternal() { return 0;}
  static int getMinorVersionInternal() { return 0;}
  Properties parseURL(String url, Properties defaults) throws SQLException { return null;}
  private static int safeIntParse(String intAsString) { return 0;}
 
et qd je suis la dedans je bloque sur la premiere ligne du premier commentaire...
j'ai fait pas mal de sites et j'avouerai que j'ai pas vu de probleme similaire. et je viens encore de verifier le jar qui est bien dans le classpath...
je desespere mais j'essaye tjs...
a+

n°715467
benou
Posté le 04-05-2004 à 18:41:45  profilanswer
 

hermes84 a écrit :

en fait ya pas de message d'erreur, qd je le lance normalement il "rame" un peu et n'affiche rien


 :heink:  
 
ben essaye de lancer une requête sur ta base pour voir ce que ca te dis ...
 
Sinon, c'est normal qu'en mode debug il ne puisse pas te placer sur la bonne ligne. Pour ca il faudrait que tu aies les sources du driver mySQL. Là ce qu'il t'affiche c'est la version décompilée de la classe.


Message édité par benou le 04-05-2004 à 19:38:35

---------------
ma vie, mon oeuvre - HomePlayer
n°715489
the real m​oins moins
Posté le 04-05-2004 à 19:20:03  profilanswer
 

à propos faudra un jour qu'on m'explique pourquoi tous les tutos font un Class.forName sans expliquer pourquoi au lieu de faire un DriverManager.register-machin qui est plus explicite et propre..


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°715499
benou
Posté le 04-05-2004 à 19:42:01  profilanswer
 

the real moins moins a écrit :

à propos faudra un jour qu'on m'explique pourquoi tous les tutos font un Class.forName sans expliquer pourquoi au lieu de faire un DriverManager.register-machin qui est plus explicite et propre..


parce que si je me trompe pas, le register-machin prend en paramêtre une classe => il faut construire la classe => on générale faire un new le.Driver() => mettre en dur le nom de la classe => c'est pas paramétrable de façon externe (dans un fichier de properties ou autre).
 
Et puis ca fait partie des spécifs JDBC que le chargement de la classe Driver enregistre le driver si c'est pas déjà fait.
 
Mais je suis d'accord avec toi. C'est pas clair. Perso c'est en cherchant à quoi servait ce truc que j'ai découvert l'existence des blocs static en java :)


---------------
ma vie, mon oeuvre - HomePlayer
n°715506
the real m​oins moins
Posté le 04-05-2004 à 19:47:02  profilanswer
 

ben registerDriver(Class.forName("blah" ).new Instance())  
me paraitrait plus logique quoi... je vois pas pq "ca fait partie des spécifs JDBC que le chargement de la classe Driver enregistre le driver si c'est pas déjà fait."
 
C'est dans le code des drivers qu'ils doivent mettre un bloc static pour faire ça? [:mlc]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°715514
benou
Posté le 04-05-2004 à 19:51:35  profilanswer
 

the real moins moins a écrit :

ben registerDriver(Class.forName("blah" ).new Instance())  
me paraitrait plus logique quoi... je vois pas pq "ca fait partie des spécifs JDBC que le chargement de la classe Driver enregistre le driver si c'est pas déjà fait."


nan mais moi je suis d'accord, mais là, en même temps tu construis et enregistre le drivers à chaque execution de cette ligne, alors qu'avec le Class.forName(), ca le fait qu'une fois ...
 
moi j'aurais bien vu un registerDriver("la classe du driver" ), qui lui fait le Class.forName (ou autre chose). Ca aurait été plus clair ...
 

the real moins moins a écrit :


C'est dans le code des drivers qu'ils doivent mettre un bloc static pour faire ça? [:mlc]


bha oui, sinon comment veux-tu que ca marche ? :)


---------------
ma vie, mon oeuvre - HomePlayer
mood
Publicité
Posté le 04-05-2004 à 19:51:35  profilanswer
 

n°715519
the real m​oins moins
Posté le 04-05-2004 à 20:00:12  profilanswer
 

benou a écrit :

nan mais moi je suis d'accord, mais là, en même temps tu construis et enregistre le drivers à chaque execution de cette ligne, alors qu'avec le Class.forName(), ca le fait qu'une fois ...
 
moi j'aurais bien vu un registerDriver("la classe du driver" ), qui lui fait le Class.forName (ou autre chose). Ca aurait été plus clair ...


ou une méthode register qui prend un Class [:spamafote]
bah d'un autre côté, tu ne registerais ton driver qu'au demarrage de ton appli et ça serait reglé.
 

benou a écrit :


bha oui, sinon comment veux-tu que ca marche ? :)


non mais j'ai compris mais je trouve ça un peu chelou comme spec


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°715522
benou
Posté le 04-05-2004 à 20:02:02  profilanswer
 

the real moins moins a écrit :

ou une méthode register qui prend un Class [:spamafote]


bha, tant qu'à faire, autant éviter de passer par un Class : ca évite une opération "troublante" pour les débutants


---------------
ma vie, mon oeuvre - HomePlayer
n°715531
the real m​oins moins
Posté le 04-05-2004 à 20:14:10  profilanswer
 

bah et le Class.forname qui ne fait rien c'est pas troublant?
et puis bon s'il fallait tout faire en fonction des débutants, on ferait du logo


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°715625
benou
Posté le 04-05-2004 à 22:03:51  profilanswer
 

the real moins moins a écrit :

bah et le Class.forname qui ne fait rien c'est pas troublant?


je t'ai déjà dit que j'étais d'accord avec toi la dessus :o


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  driver MySql

 

Sujets relatifs
MySQL: problème avec une requête multitable[mysql] Creation base et grant
MySQL auto-increment[MYSQL] prob bizarre ma requete ne me renvoi que le premier résultat
Mysql & Order By[Mysql] pb entre max et mysql_num_rows
Mysql - Petit problème de clé primaire -SubQueries en MySql
MySQL (export de données en fichier CSV) ?[JDBC] Installation et fonctionnement du driver avec MySQL
Plus de sujets relatifs à : driver MySql


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)