import java.util.*;
import java.sql.*;
import java.io.*;
public class DbConnection
{
Connection con=null;
Statement smt=null;
ResultSet rt=null;
public DbConnection()
{
}
public boolean openConnection()
{
Properties prop=new Properties();
try
{
InputStream in=getClass().getResourceAsStream("db.properties");
prop.load(in);
if(in!=null)
{
in.close();
}
}
catch(IOException ioe)
{
System.out.println("Con not open DataBase!");
}
String dr=prop.getProperty("dr");
String ul=prop.getProperty("ul");
String usr=prop.getProperty("usr");
String pwd=prop.getProperty("pwd");
System.out.println("dr=["+dr+"]");
System.out.println("ul=["+ul+"]");
System.out.println("usr=["+usr+"]");
System.out.println("pwd=["+pwd+"]");
try
{
Class.forName(dr);
}
catch(ClassNotFoundException cnfe)
{
System.out.println("driver "+dr+"load failed!");
return false;
}
try
{
this.con=DriverManager.getConnection(ul,usr,pwd);
}
catch(SQLException sqle2)
{
System.out.println("Connection failed!");
}
return true;
}
public ResultSet executeQuery(String query) throws SQLException
{
this.smt=con.createStatement();
this.rt=smt.executeQuery(query);
return rt;
}
public void executeUpdate(String query) throws SQLException
{
this.smt=con.createStatement();
smt.executeUpdate(query);
if(smt!=null)
{
smt.close();
}
}
public void close() throws SQLException
{
if(con!=null) con.close();
if(rt!=null) rt.close();
if(smt!=null) smt.close();
}
protected void finalize() throws Throwable
{
this.close();
}
}
/*............*/
import java.sql.*;
public class ViewQueryBean
{
DbConnection dc=null;
ResultSet rt=null;
public ViewQueryBean()
{
dc=new DbConnection();
}
public boolean openConnection()
{
return dc.openConnection();
}
public void executeQuery(String sqlsmt) throws SQLException
{
this.rt=dc.executeQuery(sqlsmt);
}
public void executeUpdate(String sqlsmt) throws SQLException
{
dc.executeUpdate(sqlsmt);
}
public int getColumnCount() throws SQLException
{
ResultSetMetaData rtmd=rt.getMetaData();
return rtmd.getColumnCount();
}
public String getColumnName(int index) throws SQLException 
{
ResultSetMetaData rtmd=rt.getMetaData();
return rtmd.getColumnName(index);
}
public String getData(int index) throws SQLException
{
return rt.getString(index).trim();
}
public String getData(String columnName) throws SQLException
{
return rt.getString(columnName).trim();
}
public void close() throws SQLException
{
if(rt!=null) rt.close();
if(dc!=null) dc.close();
}
protected void finalize() throws Throwable
{
close();
}
}

解决方案 »

  1.   

    package com.davidflanagan.examples.sql;
    import java.sql.*;
    import java.util.Properties;/**
     * This class uses the DatabaseMetaData class to obtain information about
     * the database, the JDBC driver, and the tables in the database, or about
     * the columns of a named table.
     **/
    public class GetDBInfo {
        public static void main(String[] args) {
            Connection c = null;  // The JDBC connection to the database server
            try {
                // Look for the properties file DB.props in the same directory as
                // this program.  It will contain default values for the various
                // parameters needed to connect to a database
                Properties p = new Properties();
                try { p.load(GetDBInfo.class.getResourceAsStream("DB.props")); }
                catch (Exception e) {}
                
                // Get default values from the properties file
                String driver = p.getProperty("driver");     // Driver class name
                String server = p.getProperty("server", ""); // JDBC URL for server
                String user = p.getProperty("user", "");     // db user name
                String password = p.getProperty("password", ""); // db password
        
                // These variables don't have defaults
                String database = null; // The db name (appended to server URL)
                String table = null;    // The optional name of a table in the db
                
                // Parse the command-line args to override the default values above
                for(int i = 0; i < args.length; i++) {
                    if (args[i].equals("-d")) driver = args[++i];     //-d <driver>
                    else if (args[i].equals("-s")) server = args[++i];//-s <server>
                    else if (args[i].equals("-u")) user = args[++i];  //-u <user>
                    else if (args[i].equals("-p")) password = args[++i]; 
                    else if (database == null) database = args[i];    // <dbname>
                    else if (table == null) table = args[i];          // <table>
                    else throw new IllegalArgumentException("Unknown argument: "
    +args[i]);
                }            // Make sure that at least a server or a database were specified. 
                // If not, we have no idea what to connect to, and cannot continue.
                if ((server.length() == 0) && (database.length() == 0))
                    throw new IllegalArgumentException("No database specified.");            // Load the db driver, if any was specified.
                if (driver != null) Class.forName(driver);
                
                // Now attempt to open a connection to the specified database on
                // the specified server, using the specified name and password
                c = DriverManager.getConnection(server+database, user, password);            // Get the DatabaseMetaData object for the connection.  This is the
                // object that will return us all the data we're interested in here
                DatabaseMetaData md = c.getMetaData();            // Display information about the server, the driver, etc.
                System.out.println("DBMS: " + md.getDatabaseProductName() + 
           " " + md.getDatabaseProductVersion());
                System.out.println("JDBC Driver: " + md.getDriverName() + 
           " " + md.getDriverVersion());
                System.out.println("Database: " + md.getURL());
                System.out.println("User: " + md.getUserName());            // Now, if the user did not specify a table, then display a list of
                // all tables defined in the named database.  Note that tables are
                // returned in a ResultSet, just like query results are.
                if (table == null) {
                    System.out.println("Tables:");
                    ResultSet r = md.getTables("", "", "%", null);
                    while(r.next()) System.out.println("\t" + r.getString(3));
                }            // Otherwise, list all columns of the specified table.
                // Again, information about the columns is returned in a ResultSet
                else {
                    System.out.println("Columns of " + table + ": ");
                    ResultSet r = md.getColumns("", "", table, "%");
                    while(r.next()) 
                        System.out.println("\t" + r.getString(4) + " : " +
           r.getString(6));
                }
            }
            // Print an error message if anything goes wrong.
            catch (Exception e) {
                System.err.println(e);
                if (e instanceof SQLException)
                    System.err.println(((SQLException)e).getSQLState());
                System.err.println("Usage: java GetDBInfo [-d <driver] " +
           "[-s <dbserver>]\n" +
           "\t[-u <username>] [-p <password>] <dbname>");
            }
            // Always remember to close the Connection object when we're done!
            finally { 
                try { c.close(); } catch (Exception e) {}
            }
        }
    }
    看看这个如何?