[queryviewer-devel] queryviewer/src/net/sourceforge/queryviewer JDBCConnectionImpl.java,NONE,1.1
Status: Alpha
Brought to you by:
avdyk
From: <av...@us...> - 2003-06-16 07:41:19
|
Update of /cvsroot/queryviewer/queryviewer/src/net/sourceforge/queryviewer In directory sc8-pr-cvs1:/tmp/cvs-serv11685a Added Files: JDBCConnectionImpl.java Log Message: changement de nom --- NEW FILE: JDBCConnectionImpl.java --- /* Created on 14-mai-2003 */ package net.sourceforge.queryviewer; import java.sql.Connection; import java.sql.ResultSetMetaData; import java.sql.DatabaseMetaData; import java.sql.SQLException; /** * Une classe qui permet d'exécuter les requêtes que l'utilisateur a encodé. * @author <a href="mailto:arn...@ul...">Arnaud Vandyck</a> * @version $Id: JDBCConnectionImpl.java,v 1.1 2003/06/16 07:41:15 avdyk Exp $ */ public class JDBCConnectionImpl implements net.sourceforge.queryviewer.Connection { private java.sql.Connection connection; private String info; /** * Construction d'un objet qui va permettre de trouver les requêtes de l'utilisateur. * * @param driver le pilote de la base de données * @param url l'url de la base de données * @param username le nom d'utilisateur pour se connecter à la base de données * @param password le mot de passe pour se connecter à la base de données * @throws ClassNotFoundException Si le pilote n'a pas été trouvé * @throws java.sql.SQLException Si la connexion n'a pu être établie */ public JDBCQueryImpl( String driver, String url, String username, String password) throws QueryException { super(); try { Class.forName( driver ); this.connection = java.sql.DriverManager.getConnection( url, username, password ); this.info = prepareInfo(); } catch( ClassNotFoundException cnf ) { this.info = cnf.toString(); throw new QueryException( cnf ); } catch( java.sql.SQLException sqlex ) { this.info = sqlex.toString(); throw new QueryException( sqlex ); } } /** * Construction du moteur de requête avec un objet java.sql.Connection. * @deprecated * @param connection la connexion qui sera utilisée pour effectuer les requêtes */ public JDBCQueryImpl(Connection connection) throws QueryException { super(); this.connection = connection; this.info = prepareInfo(); } /** * Exécution de la requête. * @param q la requête * @return un tableau à deux dimensions contenant les lignes et les colonnes de la requête */ public synchronized String[][] performQuery(Query q) throws QueryException { String[][] data = null; try { java.sql.Statement stmt = this.connection.createStatement(); java.sql.ResultSet rs = stmt.executeQuery(q.getQueryString()); String [] title = getColumnNames(rs.getMetaData()); java.util.ArrayList ar = new java.util.ArrayList(); ar.add(title); int cols = title.length; while(rs.next()) { String[] row=new String[cols]; for(int i=0; i<cols; i++) { row[i]=rs.getString(i+1); } ar.add(row); } if(!ar.isEmpty()) { data=new String[ar.size()][cols]; data=(String[][])ar.toArray(data); } } catch(SQLException sqlex) { throw new QueryException(sqlex); } return data; } /** * Retourne le nom des colonnes * @param metaData les méta données de la requête * @return un tableau contenant les noms des colonnes */ private String[] getColumnNames(ResultSetMetaData metaData) throws SQLException { String[] title=null; int col=metaData.getColumnCount(); title=new String[col]; for(int i=0; i<col; i++) { title[i]=metaData.getColumnName(i+1); } return title; } /** * Retourne une description du driver JDBC. * @see net.sourceforge.queryviewer.Connection#getInfo() */ public String getInfo() { return this.info; } /** Préparation des informations sur le driver. * @return les informations */ protected String prepareInfo() { StringBuffer stb = new StringBuffer( "JDBC Driver Informations\n" ); DatabaseMetaData dbmd = this.connection.getMetaData(); stb.append( "Product Name: " + dbmd.getDatabaseProductName() + "\n" ); stb.append( "Product Version: " + dbmd.getDatabaseProductVersion() + "\n" ); stb.append( "Driver Version: " + dbmd.getMajorVersion() + "." + dbmd.getMinorVersion() + "\n" ); stb.append( "Driver Name: " + dbmd.getDriverName() + "\n" ); stb.append( "URL: " + dbmd.getURL() + "\n" ); stb.append( "User Name: " + dbmd.getUserName() + "\n" ); stb.append( "Schemas:\n---------\n " ); ResultSet sches = dbmd.getSchemas(); while(cats.next()) { stb.append( sches.getString(1) + "\n" ); } stb.append( "Catalogs:\n---------\n " ); ResultSet cats = dbmd.getCatalogs(); while(cats.next()) { stb.append( cats.getString(1) + "\n" ); } return stb.toString(); } public void close() throws QueryException { try { this.connection.close(); } catch(SQLException sqlex) { throw new QueryException( sqlex ); } } } |