
FAQ JDBCConsultez toutes les FAQ
Nombre d'auteurs : 8, nombre de questions : 162, derni�re mise � jour : 3 juin 2015 Ajouter une question
Cette FAQ a �t� r�alis�e � partir des questions fr�quemment pos�es sur les forums de http://www.developpez.com et de l'exp�rience personnelle des auteurs.
Nous tenons � souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette FAQ ne pr�tend pas non plus �tre compl�te. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant r�dacteur, lisez ceci.
L'interface ParameterMetaData permet d'obtenir des informations sur les param�tres d'un PreparedStatement. Par exemple :
Code java : | S�lectionner tout |
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 | String sql = "..."; PreparedStatement statement = connection.prepareStatement(sql); ParameterMetaData metadata = statement.getParameterMetaData(); for(int i=0; i<metadata.getParameterCount(); i++){ String classe = metadata.getParameterClassName(i); int mode = metadata.getParameterMode(i); String sMode = ""; switch(mode){ case ParameterMetaData.parameterModeIn: sMode = "IN"; break; case ParameterMetaData.parameterModeOut: sMode = "OUT"; break; case ParameterMetaData.parameterModeInOut: sMode = "INOUT"; break; case ParameterMetaData.parameterModeUnknown: sMode = "inconnu"; break; default : sMode = "bug!!!";break; } int type = metadata.getParameterType(i); String sType = metadata.getParameterTypeName(i); int precision = metadata.getPrecision(i); int scale = metadata.getScale(i); int nullable = metadata.isNullable(i); String sNullable = ""; switch(nullable){ case ParameterMetaData.parameterNoNulls: sNullable = "ne peux pas �tre NULL"; break; case ParameterMetaData.parameterNullable: sNullable = "peux �tre NULL"; break; case ParameterMetaData.parameterNullableUnknown: sNullable = "inconnu"; break; default : sNullable = "bug!!!";break; } boolean sign = metadata.isSigned(i); System.out.println("INFORMATIONS SUR LE PARAMETRE D'INDEX "+i); System.out.println("Classe java = "+classe); System.out.println("Mode = "+mode+" : "+sMode); System.out.println("Type dans java.sql.Types = "+type); System.out.println("Nom du type = "+sType); System.out.println("Pr�cision = "+precision); System.out.println("Scale = "+scale); System.out.println("Nullable = "+nullable+" : "+sNullable); System.out.println("Sign� = "+sign); } |
Il n'existe pas de m�canisme standard � JDBC pour conna�tre quelles sont les requ�tes envoy�es au SGBD. Certains drivers red�finissent les m�thodes toString() (pour Statement, PreparedStatement ou CallableStatement). Mais, il est difficile de faire une application � portable � dans ces conditions.
Heureusement, il existe une API pouvant aider � surveiller les requ�tes envoy�es au SGBD : P6SPY.
Cette API d�finit en fait un � driver � qui va englober le driver r�el. Pour plus d'informations, regardez la documentation de P6SPY.
Malheureusement, non, il n'existe pas de mani�re g�n�rique pour cr�er une base de donn�es avec JDBC. En fait JDBC est oblig� d'avoir une base de donn�es � laquelle se connecter pour pouvoir travailler.
Il existe tout de m�me une possibilit� : il faut utiliser une Connection factice qui servira de pont entre vous et le SGBD. � partir de cette Connection, vous pourrez ex�cuter une instruction sp�cifique au SGBD pour cr�er une autre base de donn�es.
Voici une m�thode qui permet de cr�er une base de donn�es MySql et d'obtenir une Connection � celle-ci :
Code java : | S�lectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public static Connection createMysqlDatabase(Connection factice, String user, String pass, String nomBase) throws SQLException{ Connection connection = null; Statement statement = null; try{ statement = factice.createStatement(); statement.execute("CREATE DATABASE "+nomBase); String url = factice.getMetaData().getURL(); url = url.substring(0,url.lastIndexOf("/")); url += "/"+nomBase; connection = DriverManager.getConnection(url,user,pass); }catch(SQLException e){ SQLException sqle = new SQLException("Cr�ation de la base impossible"); sqle.setNextException(e); throw sqle; }finally{ try{statement.close();}catch(Exception e){} } return connection; } |
Code java : | S�lectionner tout |
1 2 3 4 5 6 7 8 9 10 | Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://host/baseLien"; String user = "user"; String pass = "password"; // on commence par se connecter � la base factice Connection factice = DriverManager.getConnection(url,user,pass); // on cr�e la base et on r�cup�re une Connection Connection connection = createMysqlDatabase(factice,user,pass,"NouvelleBase"); // on peut finalement fermer notre Connection factice qui ne nous sert plus � rien factice.close(); |
Il suffit d'utiliser l'URL suivante :
Code java : | S�lectionner tout |
jdbc:odbc:;DRIVER=Microsoft Access Driver (*.mdb);DBQ=labase.mdb;
Voici un exemple complet de code pour obtenir une Connection :
Code java : | S�lectionner tout |
1 2 3 4 5 | Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url= "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:/temp/thebase.mdb"; String user = "user"; String pass = "pass"; Connection connection = DriverManager.getConnection(url,user,pass); |

Proposer une nouvelle r�ponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plut�t sur le forum de la rubrique pour �aLes sources pr�sent�es sur cette page sont libres de droits et vous pouvez les utiliser � votre convenance. Par contre, la page de pr�sentation constitue une �uvre intellectuelle prot�g�e par les droits d'auteur. Copyright � 2025 Developpez Developpez LLC. Tous droits r�serv�s Developpez LLC. Aucune reproduction, m�me partielle, ne peut �tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'� trois ans de prison et jusqu'� 300 000 � de dommages et int�r�ts.