Java DataBase Connectivity
Le package JDBC (Java DataBase Connectivity) va nous permettre de facilement interroger une base de données relationnelles via une application écrite en Java. Une chose essentielle est à faire pour que cela puisse fonctionner : il vous faut charger une classe dans la JVM qui va vous permettre de dialoguer avec un driver qui vous donnera accès à un serveur d'une base de données quelconques : pourquoi pas ODBC.
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); |
Établir
une connexion
Une fois cela fait, vous pouvez alors établir une connexion à la base de données. Pour ce faire, on utilise la méthode getConnection sur la classe
DriverManager.
Connection con = DriverManager.getConnection(URL url,String user,String
pwd);
// ou URL est de type jdbc:odbc://sql.evol.fr/dsn |
Mettre à jour la base de données
Maintenant que la connexion est établie (ie aucune exception n'à été levée) on peut y générer des requêtes dans le but de construire, ou de mettre à jour votre base.
Statement requete = con.createStatement();
requete.executeUpdate("create table pers (name varchar2(10), num
interger");
requete.executeUpdate("insert into pers values ('Moa', 15)");
requete.executeUpdate("insert into pers values ('toa', 16)");
con.close(); |
Interrogation de la base
Vous pouvez aussi lancer une requête d'interrogation. La différence est que maintenant, on doit récupérer des données de la base : c'est-à-dire plusieurs ligne et plusieurs colonnes. L'exemple suivant montre un exemple de récupération des résultats.
ResultSet resultat = requete.executeQuery("select
name, num from pers");
while(resultat.next()) {
System.out.println("name = " + resultat.getString(1) +
"num = " + resultat.getInt(2)); |
A la vue de cet exemple, il est bien clair que la connaissance des types de données de la table interrogée doit être connue par avance, sans quoi aucune récupération ne sera possible. Nous avons à notre disposition les méthodes suivantes.
boolean getBoolean(int); boolean
getBoolean(String);
byte getByte(int); byte getByte(String);
Date getDate(int); Date getDate(String);
double getDouble(int); double getDouble(String);
float getFloat(int); float getFloat(String);
int getInt(int); int getInt(String);
long getLong(int); long getLong(String);
short getShort(int); short getShort(String);
String getString(int); String getString(String); |
Il vous de plus possible de récupérer des informations liées à la nature des colonnes de la table. L'exemple suivant fait cela.
ResultSet result = requete.executeQuery("select * from pers");
ResultSetMetaData meta = res.getMetaData();
int columns = meta.getColumnCount();
boolean isRO1 = isReadOnly(1); |
int getColumnDisplaySize(int);
String getColumnName(int);
String getColumnTypeName(int);
boolean isNullable(int);
boolean isReadOnly(int); |
|