/*
?* Copyright 1999-2004 The Apache Software Foundation.
?*
?* Licensed under the Apache License, Version 2.0 (the "License");
?* you may not use this file except in compliance with the License.
?* You may obtain a copy of the License at
?*
?*????? http://www.apache.org/licenses/LICENSE-2.0
?*
?* Unless required by applicable law or agreed to in writing, software
?* distributed under the License is distributed on an "AS IS" BASIS,
?* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
?* See the License for the specific language governing permissions and
?* limitations under the License.
?*/
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
//
// Here are the dbcp-specific classes.
// Note that they are only used in the setupDataSource
// method. In normal use, your classes interact
// only with the standard JDBC API
//
import org.apache.commons.dbcp.BasicDataSource;
//
// Here's a simple example of how to use the BasicDataSource.
// In this example, we'll construct the BasicDataSource manually,
// but you could also configure it using an external conifguration file.
//
//
// Note that this example is very similiar to the PoolingDriver
// example.
//
// To compile this example, you'll want:
//? * commons-pool.jar
//? * commons-dbcp.jar
//? * j2ee.jar (for the javax.sql classes)
// in your classpath.
//
// To run this example, you'll want:
//? * commons-collections.jar
//? * commons-pool.jar
//? * commons-dbcp.jar
//? * j2ee.jar (for the javax.sql classes)
//? * the classes for your (underlying) JDBC driver
// in your classpath.
//
// Invoke the class using two arguments:
//? * the connect string for your underlying JDBC driver
//? * the query you'd like to execute
// You'll also want to ensure your underlying JDBC driver
// is registered.? You can use the "jdbc.drivers"
// property to do this.
//
// For example:
//? java -Djdbc.drivers=oracle.jdbc.driver.OracleDriver \
//?????? -classpath commons-collections.jar:commons-pool.jar:commons-dbcp.jar:j2ee.jar:oracle-jdbc.jar:. \
//?????? ManualPoolingDataSourceExample
//?????? "jdbc:oracle:thin:scott/tiger@myhost:1521:mysid"
//?????? "SELECT * FROM DUAL"
//
public class BasicDataSourceExample {
??? public static void main(String[] args) {
??????? // First we set up the BasicDataSource.
??????? // Normally this would be handled auto-magically by
??????? // an external configuration, but in this example we'll
??????? // do it manually.
??????? //
??????? System.out.println("Setting up data source.");
??????? DataSource dataSource = setupDataSource(args[0]);
??????? System.out.println("Done.");
??????? //
??????? // Now, we can use JDBC DataSource as we normally would.
??????? //
??????? Connection conn = null;
??????? Statement stmt = null;
??????? ResultSet rset = null;
??????? try {
??????????? System.out.println("Creating connection.");
??????????? conn = dataSource.getConnection();
??????????? System.out.println("Creating statement.");
??????????? stmt = conn.createStatement();
??????????? System.out.println("Executing statement.");
??????????? rset = stmt.executeQuery(args[1]);
??????????? System.out.println("Results:");
??????????? int numcols = rset.getMetaData().getColumnCount();
??????????? while(rset.next()) {
??????????????? for(int i=1;i<=numcols;i++) {
??????????????????? System.out.print("\t" + rset.getString(i));
??????????????? }
??????????????? System.out.println("");
??????????? }
??????? } catch(SQLException e) {
??????????? e.printStackTrace();
??????? } finally {
??????????? try { rset.close(); } catch(Exception e) { }
??????????? try { stmt.close(); } catch(Exception e) { }
??????????? try { conn.close(); } catch(Exception e) { }
??????? }
??? }
??? public static DataSource setupDataSource(String connectURI) {
??????? BasicDataSource ds = new BasicDataSource();
??????? ds.setDriverClassName("oracle.jdbc.driver.OracleDriver");
??????? ds.setUsername("scott");
??????? ds.setPassword("tiger");
??????? ds.setUrl(connectURI);
??????? return ds;
??? }
??? public static void printDataSourceStats(DataSource ds) throws SQLException {
??????? BasicDataSource bds = (BasicDataSource) ds;
??????? System.out.println("NumActive: " + bds.getNumActive());
??????? System.out.println("NumIdle: " + bds.getNumIdle());
??? }
??? public static void shutdownDataSource(DataSource ds) throws SQLException {
??????? BasicDataSource bds = (BasicDataSource) ds;
??????? bds.close();
??? }
}
posted on 2006-05-18 14:06
飛鳥 閱讀(1158)
評論(1) 編輯 收藏 所屬分類:
JAVA