I want to use c3p0 to connect to oracle9i,so I put c3p0-0.9.1.2.jar,classes12.jar and classes111.jar into classpath,my code is follows:
 
import java.sql.*;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class LinkMysql {
public static void main(String[] args) {
  System.out.println(">>>> ");
  try {
   ComboPooledDataSource cpds = new ComboPooledDataSource();
   cpds.setDriverClass( "oracle.jdbc.driver.OracleDriver" );
   cpds.setJdbcUrl( "jdbc:oracle:thin:@localhost:1521:oracle" );
   cpds.setUser("scott");
   cpds.setPassword("tiger");
   cpds.setMaxStatements( 180 );
   cpds.setMaxPoolSize(100);
   Connection con = null;
   Statement stmt = null;
   ResultSet rs = null;
   con=cpds.getConnection();
   stmt=con.createStatement();
   rs=stmt.executeQuery("select * from foo");
   while(rs.next()){
    System.out.println(rs.getString(1));
   }

  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}
 
When I run it,it raise following error:
 
2007-7-18 17:01:55 com.mchange.v2.log.MLog <clinit>
Info: MLog clients using java 1.4+ standard logging.
2007-7-18 17:01:55 com.mchange.v2.c3p0.C3P0Registry banner
Info: Initializing c3p0-0.9.1.2 [built 21-May-2007 15:04:56; debug? true; trace: 10]
2007-7-18 17:01:55 com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource getPoolManager
Info: Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 3,
acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCo
mmitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false,
 checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester,
dataSourceName
-> 1hgeqtb7n1o36fai1x77fou|b4d3d5, debugUnreturnedConnectionStackTraces -> false
, description -> null, driverClass -> oracle.jdbc.driver.OracleDriver, factoryCl
assLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -
> 1hgeqtb7n1o36fai1x77fou|b4d3d5, idleConnectionTestPeriod -> 0, initialPoolSize
 -> 3, jdbcUrl -> jdbc:oracle:thin:@localhost:1521:Edward, maxAdministrativeTask
Time -> 0, maxConnectionAge -> 0, maxIdleTime -> 0, maxIdleTimeExcessConnections
 -> 0, maxPoolSize -> 100, maxStatements -> 180, maxStatementsPerConnection -> 0
, minPoolSize -> 3, numHelperThreads -> 3, numThreadsAwaitingCheckoutDefaultUser
 -> 0, preferredTestQuery -> null, properties -> {user=******, password=******},
 propertyCycle -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout
-> false, unreturnedConnectionTimeout -> 0, usesTraditionalReflectiveProxies ->
false ]
2007-7-18 17:02:01 com.mchange.v2.c3p0.impl.NewPooledConnection carefulCheckHold
ability
Warn: oracle.jdbc.driver.OracleConnection@97a560 threw an Error when we tried to
 check its default holdability. This is probably due to a bug in your JDBC drive
r that c3p0 can harmlessly work around (reported for some DB2 drivers). Please v
erify that the error stack trace is consistentwith the getHoldability() method n
ot being properly implemented, and is not due to some deeper problem. This messa
ge will not be repeated for Connections of type oracle.jdbc.driver.OracleConnect
ion that provoke errors of type java.lang.AbstractMethodError when getHoldabilit
y() is called.
java.lang.AbstractMethodError: oracle.jdbc.driver.OracleConnection.getHoldabilit
y()I
        at com.mchange.v2.c3p0.impl.NewPooledConnection.carefulCheckHoldability(NewPooledConnection.java:117)
        at com.mchange.v2.c3p0.impl.NewPooledConnection.<init>(NewPooledConnection.java:109)
        at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:198)
        at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
        at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
        at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
        at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
        at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
        at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
Exception in thread "com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2" java.lang.AbstractMethodError: oracle.jdbc.driver.OracleConnection.getTypeMap()Ljava/util/Map;
        at com.mchange.v2.c3p0.impl.NewPooledConnection.carefulCheckTypeMap(NewPooledConnection.java:173)
        at com.mchange.v2.c3p0.impl.NewPooledConnection.<init>(NewPooledConnection.java:111)
        at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:198)
        at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
        at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
        at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
        at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
        at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
        at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
Exception in thread "com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0" java.lang.AbstractMethodError: oracle.jdbc.driver.OracleConnection.getTypeMap()Ljava/util/Map;
        at com.mchange.v2.c3p0.impl.NewPooledConnection.carefulCheckTypeMap(NewPooledConnection.java:173)
        at com.mchange.v2.c3p0.impl.NewPooledConnection.<init>(NewPooledConnection.java:111)
        at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:198)
        at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
        at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
        at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
        at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
        at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
        at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
Exception in thread "com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1" java.lang.AbstractMethodError: oracle.jdbc.driver.OracleConnection.getTypeMap()Ljava/util/Map;
        at com.mchange.v2.c3p0.impl.NewPooledConnection.carefulCheckTypeMap(NewPooledConnection.java:173)
        at com.mchange.v2.c3p0.impl.NewPooledConnection.<init>(NewPooledConnection.java:111)
        at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:198)
        at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
        at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
        at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
        at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
        at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
        at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
 
 
Why raise above error? How to correct it?
Thanks in advance



Confidentiality Notice: The information contained in this e-mail and any accompanying attachment(s) is intended only for the use of the intended recipient and may be confidential and/or privileged of Neusoft Group Ltd., its subsidiaries and/or its affiliates. If any reader of this communication is not the intended recipient, unauthorized use, forwarding, printing, storing, disclosure or copying is strictly prohibited, and may be unlawful. If you have received this communication in error, please immediately notify the sender by return e-mail, and delete the original message and all copies from your system. Thank you.