Comment Ca Marche - Communauté informatique  
   
Accueil - Encyclopédie informatiqueTélécharger l'encyclopédieContribuer à cet article

JDBC - Création d'objets JDBC

Création d'objets Java Database Connectivity (JDBC) Encyclopédie


Création d'objets JDBC de plus haut niveau

Puisque l'accès à une base de données nécessite l'utilisation conjointe de plusieurs objets, il peut être intéressant de créer quelques objets de plus haut niveau encapsulant la plupart des comportements cités ci-dessus.

Ainsi la création d'un objet DataBase pour permettre d'encapsuler l'ensemble des objets nécessaires à la connexion à une base de données (Connection, Statement, DataBaseMetaData), ainsi que de (re)définir des méthodes simples permettant de rendre plus simples certaines opérations, comme la création de la connexion, la récupération du nom des tables, ainsi qu'une méthode Execute rendant l'exécution de requête triviale.

class Database
{

Connection con;

ResultSet results;

ResultSetMetaData rsmd;

DatabaseMetaData dm;

String catalog;

String types[];

//----------------------------
public Database(String Driver)
{

 types = new String[1];

 types[0] = "TABLES";

 try {
 Class.forName(driver);

 }
 catch(Exception e){
  System.out.println("Erreur lors du chargement du driver:"+ e.getMessage());

 }
}

//------------------------------------------------------
public void Open(String url,String login,String password)
{

 try{
  con = DriverManager.getConnection(url,login,password);

  dma = con.getMetaData();

  results = new resultSet(dma.getCatalogs());

  String s[];

  while(results.hasMoreElements()) {
   s = results.NextElement();

  }
 }
 catch(Exception e){
  System.out.println("echec d'ouverture:"+e.getMessage());

 }
}

//-----------------
public void Close()
{

 try{
  con.close();

 }
 catch(Exception e){
  System.out.println("echec lors de la fermeture:"+e.getMessage());

 }
}

//-----------------------------
public String[] getTableNames()
{

 String[] tbnames = null;

 Vector tname = new Vector();

 try{
  results = new resultSet(dma.getTables(catalog,null,"%",types));

  while (results.hasMoreElements())
   tname.addElement(results.getColumnValue("TABLE_NAME"));
 }
 catch(Exception e){
  System.out.println(e.getMessage());

 }
 tbnames = new String[tname.size()];

 tbnames = tname.toArray();
 return tbnames;

}

//--------------------------------
public String[] getTableMetaData()
{

 results = null;

 try{
  results = new resultSet(dma.getTables(catalog,null,"%",types));

 }
 catch(Exception e){
  System.out.println(e.getMessage());

 }
 return results.getMetaData();

}

//------------------------------------------------
public String[] getColumnMetaData(String tablename)
{

 results = null;

 try{
  results = new resultSet(dma.getTables(catalog,null,tablename,null));

 }
 catch(Exception e){
  System.out.println(e.getMessage());

 }
 return results.getMetaData();

}

//------------------------------------------------
public String[] getColumnNames(String table)
{

 String[] tbnames = null;

 Vector tname = new Vector();

 try{
  results = new resultSet(dma.getTables(catalog,null,table,null));

  while (results.hasMoreElements())
   tname.addElement(results.getColumnValue("COLUMN_NAME"));
 }
 catch(Exception e){
  System.out.println(e.getMessage());

 }
 tbnames = new String[tname.size()];

 for(int i=0;i<tname.size();i++)
  tbnames[i] = (String)tname.elementAt(i);

 return tbnames;

}

//------------------------------------------------
public void getColumnValue(String table, String columnName)
{

 try{
  if (table.length()>0)
   results = Execute("Select "+columnName+" from "+table+" order by "+columnName);

 }
 catch(Exception e){
  System.out.println("Erreur sur la valeur de la colonne "
					 +columnName+e.getMessage());

 }
}

//------------------------------------------------
public String getNextValue(String columnName)
{

 String res = "";

 try{
  if (results.hasMoreElements())
   res = results.getColumnvalue(columnName);

 }
 catch(Exception e){
  System.out.println("Erreur sur la valeur suivante "+columnName+e.getMessage());

 }
 return res;

}

//------------------------------------------------
public resultSet Execute(String sql)
{

 results = null;

 try{
  Statement stmt = con.createStatement();

  results = new resultSet(stmt.executeQuery(sql));

 }
 catch(Exception e){
  System.out.println(e.getMessage());

 }
 return results;

}

}

De la même façon, un nouvel objet resultSet (avec un r minuscule) peut être intéressant s'il permet de façon transparente de retourner automatiquement les résultats sous forme d'un tableau de valeurs, ainsi qu'en encapsulant le nombre et le nom des colonnes contenues dans l'objet resultSet...

Discussions pertinentes trouvées dans le forum

29/08 20h46 java pilotes jdbc [Java] Pilotes JDBC Développement 15/09 20h49->jebok1
05/01 16h57 connection jdbc problème de connection avec JDBC Développement 23/04 10h32->fabien29088111
18/09 01h11 odbc jdbc ODBC et JDBC Développement 19/09 18h15->darkhorkeu10
26/07 00h23 objets jdbc Objets JDBC Développement 07/08 22h06->Evangelion8
13/04 11h44 installer pilote jdbc mysql installer le pilote jdbc pour mysql ? Webmastering 13/04 14h33->yserman7
24/04 18h42 config mini linux jdbc Config mini Linux +jdbc Développement 24/04 23h00->Titeuf7
05/08 18h02 jdbc jdbc Développement 06/08 10h06->choubaka6
30/08 11h43 oracle jdbc driver Oracle jdbc driver Développement 31/08 12h24->Canard0076
28/06 16h07 bases données jdbc Bases de données avec JDBC Windows 29/06 11h10->Nath5
07/10 08h46 java jdbc odbc JAVA JDBC:ODBC Développement 08/07 12h51->el aasri5
Discussion fermée Problème résolu JDBC Plus de discussions sur « JDBC »

Ce document intitulé « JDBC - Création d'objets JDBC » issu de l'encyclopédie informatique Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.