Philip Jenvey,你好
 
    just waiting next release ?
 
    to a javaer, working with jython is happy
 
 
lijihuailijihuai@126.com
2009-08-12
----- Original Message -----
From: Philip Jenvey
To: lijihuai
Sent: 2009-08-12, 11:57:25
Subject: [issue1430] Oracle JDBC Connection close

New submission from Philip Jenvey <pjenvey@users.sourceforge.net>:

I was able to reproduce this. The oracle Connection object implements 3
DBAccess interfaces that define their own close methods that take 1
argument. For some reason the descriptor for close gets confused into
thinking they are the only available close() methods:

>>> c =
DriverManager.getConnection('jdbc:oracle:thin:@192.168.21.128:1521:xe',
'scott', 'tiger')
>>> c.close()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: close(): expected 1 args; got 0
>>> c
oracle.jdbc.driver.T4CConnection@d27a744
>>> T4CConnection = type(c)
>>> T4CConnection.close.printArgs()
nargs: 3
interface oracle.sql.BfileDBAccess, false, 0, public abstract void
oracle.sql.BfileDBAccess.close(oracle.sql.BFILE) throws
java.sql.SQLException
  (oracle.sql.BFILE, )
interface oracle.sql.BlobDBAccess, false, 0, public abstract void
oracle.sql.BlobDBAccess.close(oracle.sql.BLOB) throws
java.sql.SQLException
  (oracle.sql.BLOB, )
interface oracle.sql.ClobDBAccess, false, 0, public abstract void
oracle.sql.ClobDBAccess.close(oracle.sql.CLOB) throws
java.sql.SQLException
  (oracle.sql.CLOB, )
>>> T4CConnection.__bases__
(<type 'oracle.sql.BfileDBAccess'>, <type 'oracle.sql.BlobDBAccess'>,
<type 'oracle.sql.ClobDBAccess'>, <type
'oracle.jdbc.driver.PhysicalConnection'>)
>>> T4CConnection.__mro__
(<type 'oracle.jdbc.driver.T4CConnection'>, <type
'oracle.sql.BfileDBAccess'>, <type 'oracle.sql.BlobDBAccess'>, <type
'oracle.sql.ClobDBAccess'>, <type
'oracle.jdbc.driver.PhysicalConnection'>, <type
'oracle.jdbc.driver.OracleConnection'>, <type
'oracle.jdbc.internal.OracleConnection'>, <type
'oracle.jdbc.internal.ClientDataSupport'>, <type
'oracle.jdbc.OracleConnectionWrapper'>, <type
'oracle.jdbc.OracleConnection'>, <type 'java.sql.Connection'>, <type
'java.sql.Wrapper'>, <type 'java.lang.Object'>, <type 'object'>)
>>> for t in T4CConnection.__mro__:
.... if hasattr(t, 'close'): % t
.... print '---- %s ----' % t
.... print t.close.printArgs()
....
---- <type 'oracle.jdbc.driver.T4CConnection'> ----
nargs: 3
interface oracle.sql.BfileDBAccess, false, 0, public abstract void
oracle.sql.BfileDBAccess.close(oracle.sql.BFILE) throws
java.sql.SQLException
  (oracle.sql.BFILE, )
interface oracle.sql.BlobDBAccess, false, 0, public abstract void
oracle.sql.BlobDBAccess.close(oracle.sql.BLOB) throws
java.sql.SQLException
  (oracle.sql.BLOB, )
interface oracle.sql.ClobDBAccess, false, 0, public abstract void
oracle.sql.ClobDBAccess.close(oracle.sql.CLOB) throws
java.sql.SQLException
  (oracle.sql.CLOB, )
None
---- <type 'oracle.sql.BfileDBAccess'> ----
nargs: 1
interface oracle.sql.BfileDBAccess, false, 0, public abstract void
oracle.sql.BfileDBAccess.close(oracle.sql.BFILE) throws
java.sql.SQLException
  (oracle.sql.BFILE, )
None
---- <type 'oracle.sql.BlobDBAccess'> ----
nargs: 1
interface oracle.sql.BlobDBAccess, false, 0, public abstract void
oracle.sql.BlobDBAccess.close(oracle.sql.BLOB) throws
java.sql.SQLException
  (oracle.sql.BLOB, )
None
---- <type 'oracle.sql.ClobDBAccess'> ----
nargs: 1
interface oracle.sql.ClobDBAccess, false, 0, public abstract void
oracle.sql.ClobDBAccess.close(oracle.sql.CLOB) throws
java.sql.SQLException
  (oracle.sql.CLOB, )
None
---- <type 'oracle.jdbc.driver.PhysicalConnection'> ----
nargs: 3
class oracle.jdbc.OracleConnectionWrapper, false, 0, public void
oracle.jdbc.OracleConnectionWrapper.close() throws java.sql.SQLException
  ()
class oracle.jdbc.OracleConnectionWrapper, false, 0, public void
oracle.jdbc.OracleConnectionWrapper.close(int) throws
java.sql.SQLException
  (int, )
class oracle.jdbc.OracleConnectionWrapper, false, 0, public void
oracle.jdbc.OracleConnectionWrapper.close(java.util.Properties) throws
java.sql.SQLException
  (java.util.Properties, )
None
---- <type 'oracle.jdbc.driver.OracleConnection'> ----
nargs: 3
interface java.sql.Connection, false, 0, public abstract void
java.sql.Connection.close() throws java.sql.SQLException
  ()
interface oracle.jdbc.OracleConnection, false, 0, public abstract void
oracle.jdbc.OracleConnection.close(int) throws java.sql.SQLException
  (int, )
interface oracle.jdbc.OracleConnection, false, 0, public abstract void
oracle.jdbc.OracleConnection.close(java.util.Properties) throws
java.sql.SQLException
  (java.util.Properties, )
None
---- <type 'oracle.jdbc.internal.OracleConnection'> ----
nargs: 3
interface java.sql.Connection, false, 0, public abstract void
java.sql.Connection.close() throws java.sql.SQLException
  ()
interface oracle.jdbc.OracleConnection, false, 0, public abstract void
oracle.jdbc.OracleConnection.close(int) throws java.sql.SQLException
  (int, )
interface oracle.jdbc.OracleConnection, false, 0, public abstract void
oracle.jdbc.OracleConnection.close(java.util.Properties) throws
java.sql.SQLException
  (java.util.Properties, )
None
---- <type 'oracle.jdbc.OracleConnectionWrapper'> ----
nargs: 3
class oracle.jdbc.OracleConnectionWrapper, false, 0, public void
oracle.jdbc.OracleConnectionWrapper.close() throws java.sql.SQLException
  ()
class oracle.jdbc.OracleConnectionWrapper, false, 0, public void
oracle.jdbc.OracleConnectionWrapper.close(int) throws
java.sql.SQLException
  (int, )
class oracle.jdbc.OracleConnectionWrapper, false, 0, public void
oracle.jdbc.OracleConnectionWrapper.close(java.util.Properties) throws
java.sql.SQLException
  (java.util.Properties, )
None
---- <type 'oracle.jdbc.OracleConnection'> ----
nargs: 3
interface java.sql.Connection, false, 0, public abstract void
java.sql.Connection.close() throws java.sql.SQLException
  ()
interface oracle.jdbc.OracleConnection, false, 0, public abstract void
oracle.jdbc.OracleConnection.close(int) throws java.sql.SQLException
  (int, )
interface oracle.jdbc.OracleConnection, false, 0, public abstract void
oracle.jdbc.OracleConnection.close(java.util.Properties) throws
java.sql.SQLException
  (java.util.Properties, )
None
---- <type 'java.sql.Connection'> ----
nargs: 1
interface java.sql.Connection, false, 0, public abstract void
java.sql.Connection.close() throws java.sql.SQLException
  ()
None

----------
nosy: +cgroves, pjenvey
priority: -> high

_______________________________________
Jython tracker <report@bugs.jython.org>
<http://bugs.jython.org/issue1430>
_______________________________________