org.h2.jdbc
Class JdbcConnection

java.lang.Object
  extended by org.h2.message.TraceObject
      extended by org.h2.jdbc.JdbcConnection
All Implemented Interfaces:
java.sql.Connection

public class JdbcConnection
extends TraceObject
implements java.sql.Connection

Represents a connection (session) to a database.

Thread safety: the connection is thread-safe, because access is synchronized. However, for compatibility with other databases, a connection should only be used in one thread at any time.


Field Summary
protected  java.lang.Exception openStackTrace
          The stack trace of when the connection was created.
 
Fields inherited from class org.h2.message.TraceObject
ARRAY, BLOB, CALLABLE_STATEMENT, CLOB, CONNECTION, DATA_SOURCE, DATABASE_META_DATA, PARAMETER_META_DATA, PREPARED_STATEMENT, RESULT_SET, RESULT_SET_META_DATA, SAVEPOINT, SQL_EXCEPTION, STATEMENT, XA_DATA_SOURCE, XID
 
Fields inherited from interface java.sql.Connection
TRANSACTION_NONE, TRANSACTION_READ_COMMITTED, TRANSACTION_READ_UNCOMMITTED, TRANSACTION_REPEATABLE_READ, TRANSACTION_SERIALIZABLE
 
Constructor Summary
JdbcConnection(ConnectionInfo ci, boolean useBaseDir)
          INTERNAL
JdbcConnection(JdbcConnection clone)
          INTERNAL
JdbcConnection(SessionInterface session, java.lang.String user, java.lang.String url)
          INTERNAL
JdbcConnection(java.lang.String url, java.util.Properties info)
          INTERNAL
 
Method Summary
protected  void afterWriting()
          INTERNAL.
protected  void checkClosed()
          INTERNAL.
protected  void checkClosed(boolean write)
          INTERNAL.
 void clearWarnings()
          Clears all warnings.
 void close()
          Closes this connection.
 void commit()
          Commits the current transaction.
 java.sql.Blob createBlob()
          Create a new empty Blob object.
 Value createBlob(java.io.InputStream x, long length)
          Create a Blob value from this input stream.
 java.sql.Clob createClob()
          Create a new empty Clob object.
 Value createClob(java.io.Reader x, long length)
          Create a Clob value from this reader.
 java.sql.Statement createStatement()
          Creates a new statement.
 java.sql.Statement createStatement(int resultSetType, int resultSetConcurrency)
          Creates a statement with the specified result set type and concurrency.
 java.sql.Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability)
          Creates a statement with the specified result set type, concurrency, and holdability.
protected  void finalize()
           
 boolean getAutoCommit()
          Gets the current setting for auto commit.
 java.lang.String getCatalog()
          Gets the current catalog name.
 int getHoldability()
          Returns the current result set holdability.
 java.sql.DatabaseMetaData getMetaData()
          Gets the database meta data for this database.
 int getPowerOffCount()
          INTERNAL
 int getQueryTimeout()
          INTERNAL
 SessionInterface getSession()
          INTERNAL
 int getTransactionIsolation()
          Returns the current transaction isolation level.
 java.util.Map<java.lang.String,java.lang.Class<?>> getTypeMap()
          Gets the type map.
 java.sql.SQLWarning getWarnings()
          Gets the first warning reported by calls on this object.
 boolean isClosed()
          Returns true if this connection has been closed.
 boolean isReadOnly()
          Returns true if the database is read-only.
 boolean isValid(int timeout)
          Returns true if this connection is still valid.
 java.lang.String nativeSQL(java.lang.String sql)
          Translates a SQL statement into the database grammar.
 java.sql.CallableStatement prepareCall(java.lang.String sql)
          Creates a new callable statement.
 java.sql.CallableStatement prepareCall(java.lang.String sql, int resultSetType, int resultSetConcurrency)
          Creates a callable statement with the specified result set type and concurrency.
 java.sql.CallableStatement prepareCall(java.lang.String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)
          Creates a callable statement with the specified result set type, concurrency, and holdability.
 java.sql.PreparedStatement prepareStatement(java.lang.String sql)
          Creates a new prepared statement.
 java.sql.PreparedStatement prepareStatement(java.lang.String sql, int autoGeneratedKeys)
          Creates a new prepared statement.
 java.sql.PreparedStatement prepareStatement(java.lang.String sql, int[] columnIndexes)
          Creates a new prepared statement.
 java.sql.PreparedStatement prepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency)
          Creates a prepared statement with the specified result set type and concurrency.
 java.sql.PreparedStatement prepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)
          Creates a prepared statement with the specified result set type, concurrency, and holdability.
 java.sql.PreparedStatement prepareStatement(java.lang.String sql, java.lang.String[] columnNames)
          Creates a new prepared statement.
 void releaseSavepoint(java.sql.Savepoint savepoint)
          Releases a savepoint.
 void rollback()
          Rolls back the current transaction.
 void rollback(java.sql.Savepoint savepoint)
          Rolls back to a savepoint.
 void setAutoCommit(boolean autoCommit)
          Switches auto commit on or off.
 void setCatalog(java.lang.String catalog)
          Set the default catalog name.
 void setExecutingStatement(java.sql.Statement stat)
          INTERNAL
 void setHoldability(int holdability)
          Changes the current result set holdability.
 void setPowerOffCount(int count)
          INTERNAL
 void setQueryTimeout(int seconds)
          INTERNAL
 void setReadOnly(boolean readOnly)
          According to the JDBC specs, this setting is only a hint to the database to enable optimizations - it does not cause writes to be prohibited.
 java.sql.Savepoint setSavepoint()
          Creates a new unnamed savepoint.
 java.sql.Savepoint setSavepoint(java.lang.String name)
          Creates a new named savepoint.
 void setTraceLevel(int level)
          INTERNAL
 void setTransactionIsolation(int level)
          Changes the current transaction isolation level.
 void setTypeMap(java.util.Map<java.lang.String,java.lang.Class<?>> map)
          [Partially supported] Sets the type map.
 java.lang.String toString()
          INTERNAL
 
Methods inherited from class org.h2.message.TraceObject
debugCode, debugCodeAssign, debugCodeCall, debugCodeCall, debugCodeCall, getNextId, getTrace, getTraceId, getTraceObjectName, isDebugEnabled, isInfoEnabled, logAndConvert, quote, quoteArray, quoteBigDecimal, quoteBytes, quoteDate, quoteIntArray, quoteMap, quoteTime, quoteTimestamp, setTrace, setTrace, toString, unsupported
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

openStackTrace

protected java.lang.Exception openStackTrace
The stack trace of when the connection was created.

Constructor Detail

JdbcConnection

public JdbcConnection(java.lang.String url,
                      java.util.Properties info)
               throws java.sql.SQLException
INTERNAL

Throws:
java.sql.SQLException

JdbcConnection

public JdbcConnection(ConnectionInfo ci,
                      boolean useBaseDir)
               throws java.sql.SQLException
INTERNAL

Throws:
java.sql.SQLException

JdbcConnection

public JdbcConnection(JdbcConnection clone)
INTERNAL


JdbcConnection

public JdbcConnection(SessionInterface session,
                      java.lang.String user,
                      java.lang.String url)
INTERNAL

Method Detail

createStatement

public java.sql.Statement createStatement()
                                   throws java.sql.SQLException
Creates a new statement.

Specified by:
createStatement in interface java.sql.Connection
Returns:
the new statement
Throws:
java.sql.SQLException - if the connection is closed

createStatement

public java.sql.Statement createStatement(int resultSetType,
                                          int resultSetConcurrency)
                                   throws java.sql.SQLException
Creates a statement with the specified result set type and concurrency.

Specified by:
createStatement in interface java.sql.Connection
Returns:
the statement
Throws:
java.sql.SQLException - if the connection is closed or the result set type or concurrency are not supported

createStatement

public java.sql.Statement createStatement(int resultSetType,
                                          int resultSetConcurrency,
                                          int resultSetHoldability)
                                   throws java.sql.SQLException
Creates a statement with the specified result set type, concurrency, and holdability.

Specified by:
createStatement in interface java.sql.Connection
Returns:
the statement
Throws:
java.sql.SQLException - if the connection is closed or the result set type, concurrency, or holdability are not supported

prepareStatement

public java.sql.PreparedStatement prepareStatement(java.lang.String sql)
                                            throws java.sql.SQLException
Creates a new prepared statement.

Specified by:
prepareStatement in interface java.sql.Connection
Returns:
the prepared statement
Throws:
java.sql.SQLException - if the connection is closed

getMetaData

public java.sql.DatabaseMetaData getMetaData()
                                      throws java.sql.SQLException
Gets the database meta data for this database.

Specified by:
getMetaData in interface java.sql.Connection
Returns:
the database meta data
Throws:
java.sql.SQLException - if the connection is closed

getSession

public SessionInterface getSession()
INTERNAL


close

public void close()
           throws java.sql.SQLException
Closes this connection. All open statements, prepared statements and result sets that where created by this connection become invalid after calling this method. If there is an uncommitted transaction, it will be rolled back.

Specified by:
close in interface java.sql.Connection
Throws:
java.sql.SQLException

setAutoCommit

public void setAutoCommit(boolean autoCommit)
                   throws java.sql.SQLException
Switches auto commit on or off. Calling this function does not commit the current transaction.

Specified by:
setAutoCommit in interface java.sql.Connection
Parameters:
autoCommit - true for auto commit on, false for off
Throws:
java.sql.SQLException - if the connection is closed

getAutoCommit

public boolean getAutoCommit()
                      throws java.sql.SQLException
Gets the current setting for auto commit.

Specified by:
getAutoCommit in interface java.sql.Connection
Returns:
true for on, false for off
Throws:
java.sql.SQLException - if the connection is closed

commit

public void commit()
            throws java.sql.SQLException
Commits the current transaction. This call has only an effect if auto commit is switched off.

Specified by:
commit in interface java.sql.Connection
Throws:
java.sql.SQLException - if the connection is closed

rollback

public void rollback()
              throws java.sql.SQLException
Rolls back the current transaction. This call has only an effect if auto commit is switched off.

Specified by:
rollback in interface java.sql.Connection
Throws:
java.sql.SQLException - if the connection is closed

isClosed

public boolean isClosed()
                 throws java.sql.SQLException
Returns true if this connection has been closed.

Specified by:
isClosed in interface java.sql.Connection
Returns:
true if close was called
Throws:
java.sql.SQLException

nativeSQL

public java.lang.String nativeSQL(java.lang.String sql)
                           throws java.sql.SQLException
Translates a SQL statement into the database grammar.

Specified by:
nativeSQL in interface java.sql.Connection
Returns:
the translated statement
Throws:
java.sql.SQLException - if the connection is closed

setReadOnly

public void setReadOnly(boolean readOnly)
                 throws java.sql.SQLException
According to the JDBC specs, this setting is only a hint to the database to enable optimizations - it does not cause writes to be prohibited.

Specified by:
setReadOnly in interface java.sql.Connection
Throws:
java.sql.SQLException - if the connection is closed

isReadOnly

public boolean isReadOnly()
                   throws java.sql.SQLException
Returns true if the database is read-only.

Specified by:
isReadOnly in interface java.sql.Connection
Returns:
if the database is read-only
Throws:
java.sql.SQLException - if the connection is closed

setCatalog

public void setCatalog(java.lang.String catalog)
                throws java.sql.SQLException
Set the default catalog name. This call is ignored.

Specified by:
setCatalog in interface java.sql.Connection
Throws:
java.sql.SQLException - if the connection is closed

getCatalog

public java.lang.String getCatalog()
                            throws java.sql.SQLException
Gets the current catalog name.

Specified by:
getCatalog in interface java.sql.Connection
Returns:
the catalog name
Throws:
java.sql.SQLException - if the connection is closed

getWarnings

public java.sql.SQLWarning getWarnings()
                                throws java.sql.SQLException
Gets the first warning reported by calls on this object.

Specified by:
getWarnings in interface java.sql.Connection
Returns:
null
Throws:
java.sql.SQLException

clearWarnings

public void clearWarnings()
                   throws java.sql.SQLException
Clears all warnings.

Specified by:
clearWarnings in interface java.sql.Connection
Throws:
java.sql.SQLException

prepareStatement

public java.sql.PreparedStatement prepareStatement(java.lang.String sql,
                                                   int resultSetType,
                                                   int resultSetConcurrency)
                                            throws java.sql.SQLException
Creates a prepared statement with the specified result set type and concurrency.

Specified by:
prepareStatement in interface java.sql.Connection
Returns:
the prepared statement
Throws:
java.sql.SQLException - if the connection is closed or the result set type or concurrency are not supported

setTransactionIsolation

public void setTransactionIsolation(int level)
                             throws java.sql.SQLException
Changes the current transaction isolation level. Calling this method will commit an open transaction, even if the new level is the same as the old one, except if the level is not supported. Internally, this method calls SET LOCK_MODE. The following isolation levels are supported: This setting is not persistent. Please note that using TRANSACTION_READ_UNCOMMITTED while at the same time using multiple connections may result in inconsistent transactions.

Specified by:
setTransactionIsolation in interface java.sql.Connection
Parameters:
level - the new transaction isolation level: Connection.TRANSACTION_READ_UNCOMMITTED, Connection.TRANSACTION_READ_COMMITTED, or Connection.TRANSACTION_SERIALIZABLE
Throws:
java.sql.SQLException - if the connection is closed or the isolation level is not supported

setQueryTimeout

public void setQueryTimeout(int seconds)
                     throws java.sql.SQLException
INTERNAL

Throws:
java.sql.SQLException

getQueryTimeout

public int getQueryTimeout()
                    throws java.sql.SQLException
INTERNAL

Throws:
java.sql.SQLException

getTransactionIsolation

public int getTransactionIsolation()
                            throws java.sql.SQLException
Returns the current transaction isolation level.

Specified by:
getTransactionIsolation in interface java.sql.Connection
Returns:
the isolation level.
Throws:
java.sql.SQLException - if the connection is closed

setHoldability

public void setHoldability(int holdability)
                    throws java.sql.SQLException
Changes the current result set holdability.

Specified by:
setHoldability in interface java.sql.Connection
Parameters:
holdability - ResultSet.HOLD_CURSORS_OVER_COMMIT or ResultSet.CLOSE_CURSORS_AT_COMMIT;
Throws:
java.sql.SQLException - if the connection is closed or the holdability is not supported

getHoldability

public int getHoldability()
                   throws java.sql.SQLException
Returns the current result set holdability.

Specified by:
getHoldability in interface java.sql.Connection
Returns:
the holdability
Throws:
java.sql.SQLException - if the connection is closed

getTypeMap

public java.util.Map<java.lang.String,java.lang.Class<?>> getTypeMap()
                                                              throws java.sql.SQLException
Gets the type map.

Specified by:
getTypeMap in interface java.sql.Connection
Returns:
null
Throws:
java.sql.SQLException - if the connection is closed

setTypeMap

public void setTypeMap(java.util.Map<java.lang.String,java.lang.Class<?>> map)
                throws java.sql.SQLException
[Partially supported] Sets the type map. This is only supported if the map is empty or null.

Specified by:
setTypeMap in interface java.sql.Connection
Throws:
java.sql.SQLException

prepareCall

public java.sql.CallableStatement prepareCall(java.lang.String sql)
                                       throws java.sql.SQLException
Creates a new callable statement.

Specified by:
prepareCall in interface java.sql.Connection
Returns:
the callable statement
Throws:
java.sql.SQLException - if the connection is closed or the statement is not valid

prepareCall

public java.sql.CallableStatement prepareCall(java.lang.String sql,
                                              int resultSetType,
                                              int resultSetConcurrency)
                                       throws java.sql.SQLException
Creates a callable statement with the specified result set type and concurrency.

Specified by:
prepareCall in interface java.sql.Connection
Returns:
the callable statement
Throws:
java.sql.SQLException - if the connection is closed or the result set type or concurrency are not supported

prepareCall

public java.sql.CallableStatement prepareCall(java.lang.String sql,
                                              int resultSetType,
                                              int resultSetConcurrency,
                                              int resultSetHoldability)
                                       throws java.sql.SQLException
Creates a callable statement with the specified result set type, concurrency, and holdability.

Specified by:
prepareCall in interface java.sql.Connection
Returns:
the callable statement
Throws:
java.sql.SQLException - if the connection is closed or the result set type, concurrency, or holdability are not supported

setSavepoint

public java.sql.Savepoint setSavepoint()
                                throws java.sql.SQLException
Creates a new unnamed savepoint.

Specified by:
setSavepoint in interface java.sql.Connection
Returns:
the new savepoint
Throws:
java.sql.SQLException

setSavepoint

public java.sql.Savepoint setSavepoint(java.lang.String name)
                                throws java.sql.SQLException
Creates a new named savepoint.

Specified by:
setSavepoint in interface java.sql.Connection
Parameters:
name - the savepoint name
Returns:
the new savepoint
Throws:
java.sql.SQLException

rollback

public void rollback(java.sql.Savepoint savepoint)
              throws java.sql.SQLException
Rolls back to a savepoint.

Specified by:
rollback in interface java.sql.Connection
Parameters:
savepoint - the savepoint
Throws:
java.sql.SQLException

releaseSavepoint

public void releaseSavepoint(java.sql.Savepoint savepoint)
                      throws java.sql.SQLException
Releases a savepoint.

Specified by:
releaseSavepoint in interface java.sql.Connection
Parameters:
savepoint - the savepoint to release
Throws:
java.sql.SQLException

prepareStatement

public java.sql.PreparedStatement prepareStatement(java.lang.String sql,
                                                   int resultSetType,
                                                   int resultSetConcurrency,
                                                   int resultSetHoldability)
                                            throws java.sql.SQLException
Creates a prepared statement with the specified result set type, concurrency, and holdability.

Specified by:
prepareStatement in interface java.sql.Connection
Returns:
the prepared statement
Throws:
java.sql.SQLException - if the connection is closed or the result set type, concurrency, or holdability are not supported

prepareStatement

public java.sql.PreparedStatement prepareStatement(java.lang.String sql,
                                                   int autoGeneratedKeys)
                                            throws java.sql.SQLException
Creates a new prepared statement. This method just calls prepareStatement(String sql).

Specified by:
prepareStatement in interface java.sql.Connection
Returns:
the prepared statement
Throws:
java.sql.SQLException - if the connection is closed

prepareStatement

public java.sql.PreparedStatement prepareStatement(java.lang.String sql,
                                                   int[] columnIndexes)
                                            throws java.sql.SQLException
Creates a new prepared statement. This method just calls prepareStatement(String sql).

Specified by:
prepareStatement in interface java.sql.Connection
Returns:
the prepared statement
Throws:
java.sql.SQLException - if the connection is closed

prepareStatement

public java.sql.PreparedStatement prepareStatement(java.lang.String sql,
                                                   java.lang.String[] columnNames)
                                            throws java.sql.SQLException
Creates a new prepared statement. This method just calls prepareStatement(String sql).

Specified by:
prepareStatement in interface java.sql.Connection
Returns:
the prepared statement
Throws:
java.sql.SQLException - if the connection is closed

checkClosed

protected void checkClosed()
                    throws java.sql.SQLException
INTERNAL. Check if this connection is closed. The next operation is a read request.

Throws:
java.sql.SQLException - if the connection or session is closed

checkClosed

protected void checkClosed(boolean write)
                    throws java.sql.SQLException
INTERNAL. Check if this connection is closed.

Parameters:
write - if the next operation is possibly writing
Throws:
java.sql.SQLException - if the connection or session is closed

afterWriting

protected void afterWriting()
INTERNAL. Called after executing a command that could have written something.


finalize

protected void finalize()
Overrides:
finalize in class java.lang.Object

getPowerOffCount

public int getPowerOffCount()
INTERNAL


setPowerOffCount

public void setPowerOffCount(int count)
INTERNAL


setExecutingStatement

public void setExecutingStatement(java.sql.Statement stat)
INTERNAL


createClob

public java.sql.Clob createClob()
                         throws java.sql.SQLException
Create a new empty Clob object.

Returns:
the object
Throws:
java.sql.SQLException

createBlob

public java.sql.Blob createBlob()
                         throws java.sql.SQLException
Create a new empty Blob object.

Returns:
the object
Throws:
java.sql.SQLException

isValid

public boolean isValid(int timeout)
Returns true if this connection is still valid.

Parameters:
timeout - the number of seconds to wait for the database to respond (ignored)
Returns:
true if the connection is valid.

createClob

public Value createClob(java.io.Reader x,
                        long length)
Create a Clob value from this reader.

Parameters:
x - the reader
length - the length (if smaller or equal than 0, all data until the end of file is read)
Returns:
the value

createBlob

public Value createBlob(java.io.InputStream x,
                        long length)
Create a Blob value from this input stream.

Parameters:
x - the input stream
length - the length (if smaller or equal than 0, all data until the end of file is read)
Returns:
the value

toString

public java.lang.String toString()
INTERNAL

Overrides:
toString in class java.lang.Object

setTraceLevel

public void setTraceLevel(int level)
INTERNAL