Class OracleDriver
- java.lang.Object
-
- oracle.jdbc.driver.OracleDriver
-
- oracle.jdbc.OracleDriver
-
- All Implemented Interfaces:
Driver
,oracle.jdbc.internal.Monitor
public class OracleDriver extends oracle.jdbc.driver.OracleDriver
The Oracle JDBC driver class that implements thejava.sql.Driver
interface.Register the JDBC drivers
The JDBC driver registration is automatically done via the Java Standard Edition Service Provider mechanism introduced in
JDK6
. Oracle JDBC driver implements this feature and it is automatically registered if the Oracle JDBC driver jar is present in the classpath.Open a Connection to a database
You can open a connection to the database with the static
getConnection()
method of thejava.sql.DriverManager
class. The type of the object returned isjava.sql.Connection
.Understanding the Forms of getConnection()
Specifying a Databse URL, User Name, and Password
The following signature takes the URL, user name, and password as separate parameters:
getConnection(String URL, String user, String password);
Where the URL is of the form:
jdbc:oracle:<drivertype>:@<database>
The following example connects user
scott
with passwordtiger
to a database with SIDorcl
through port 1521 of hostmyhost
, using the Thin driver.Connection conn = DriverManager.getConnection
("jdbc:oracle:thin:@myhost:1521:orcl", "scott", "tiger");Specifying a Database URL That Includes User Name and Password
The following signature takes the URL, user name, and password all as part of a URL parameter:
getConnection(String URL);
Where the URL is of the form:
jdbc:oracle:<drivertype>:<user>/<password>@<database>
The following example connects user
scott
with passwordtiger
to a database on hostmyhost
using the OCI driver. In this case, however, the URL includes the userid and password, and is the only input parameter.Connection conn = DriverManager.getConnection
("jdbc:oracle:oci8:scott/tiger@myhost);If you want to connect with the Thin driver, you must specify the port number and SID. For example, if you want to connect to the database on host
myhost
that has a TCP/IP listener up on port 1521, and theSID
(system identifier) isorcl
:Connection conn = DriverManager.getConnection
("jdbc:oracle:thin:scott/tiger@myhost:1521:orcl);Specifying a Database URL and Properties Object
The following signature takes a URL, together with a properties object that specifies user name and password (perhaps among other things):
getConnection(String URL, Properties info);
Where the
URL
is of the form:
jdbc:oracle:<drivertype>:@<database>
In addition to the URL, use an object of the standard Java
Properties
class as input. For example:java.util.Properties info = new java.util.Properties();
"password",
info.put ("user", "scott");
info.put ("tiger"
);
info.put ("defaultRowPrefetch","15");
getConnection ("jdbc:oracle:oci8:@",info);Specifying Properties in the URL
Connection properties can also be specified in the URL. The URL and the properties are separated using '?'. All the supported connection properties can be specified using this method. Following example shows how to set the connection properties using the URL.
Note: This feature is available only withThin
driver.jdbc:oracle:thin:@myhost:1521/myservice? connect_timeout=30&transport_connect_timeout=15
The table below lists the connection properties that Oracle JDBC drivers support.
Connection Properties Recognized by Oracle JDBC Drivers
Name Short Name Type Description user n/a String the user name for logging into the database password n/a String the password for logging into the database database server String the connect string for the database internal_logon n/a String a role, such as sysdba
orsysoper
, that allows you to log on assys
defaultRowPrefetch prefetch String (containing integer value) the default number of rows to prefetch from the server (default value is "10") remarksReporting remarks String (containing boolean value) "true" if getTables() and getColumns() should report TABLE_REMARKS; equivalent to using setRemarksReporting() (default value is "false") defaultBatchValue batchvalue String (containing integer value) the default batch value that triggers an execution request (default value is "10") includeSynonyms synonyms String (containing boolean value) "true" to include column information from predefined "synonym" SQL entities when you execute a DataBaseMetaData getColumns()
call; equivalent to connectionsetIncludeSynonyms()
call (default value is "false")processEscapes n/a String (containing boolean value) "false" to disable escape processing for statements (Statement or PreparedStatement) created from this connection. Set this to "false" if you want to avoid many calls to Statement.setEscapeProcessing(false);
. This is espcially usefull for PreparedStatement where a call tosetEscapeProcessing(false)
would have no effect. The default is "true".defaultNChar n/a String (containing boolean value) "false" is the default. If set to "true", the default behavior for handling character datatypes is changed so that NCHAR/NVARCHAR2 become the default. This means that setFormOfUse() won't be needed anymore when using NCHAR/NVARCHAR2. This can also be set as a java property :
java -Doracle.jdbc.defaultNChar=true myApplication
useFetchSizeWithLongColumn n/a String (containing boolean value) "false" is the default.
THIS IS A THIN ONLY PROPERTY. IT SHOULD NOT BE USED WITH ANY OTHER DRIVERS.
If set to "true", the performance when retrieving data in a 'SELECT' will be improved but the default behavior for handling LONG columns will be changed to fetch multiple rows (prefetch size). It means that enough memory will be allocated to read this data. So if you want to use this property, make sure that the LONG columns you are retrieving are not too big or you may run out of memory. This property can also be set as a java property :
java -Doracle.jdbc.useFetchSizeWithLongColumn=true myApplication
SetFloatAndDoubleUseBinary n/a String (containing boolean value) "false" is the default.
If set to "true", causes the java.sql.PreparedStatment setFloat and setDouble API's to use internal binary format as for BINARY_FLOAT and BINARY_DOUBLE parameters.
See oracle.jdbc.OraclePreparedStatement setBinaryFloat and setBinaryDouble
Select your driver type : thin, oci, kprb...
Oracle provides four types of JDBC driver.
- Thin Driver, a 100% Java driver for client-side use without an Oracle installation, particularly with applets. The Thin driver type is
thin
. To connect userscott
with passwordtiger
to a database withSID
(system identifier)orcl
through port 1521 of hostmyhost
, using the Thin driver, you would write :Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@myhost:1521:orcl", "scott", "tiger");
- OCI Driver for client-side use with an Oracle client installation. The OCI driver type is
oci
. To connect userscott
with passwordtiger
to a database withSID
(system identifier)orcl
through port 1521 of hostmyhost
, using the OCI driver, you would write :Connection conn = DriverManager.getConnection ("jdbc:oracle:oci:@myhost:1521:orcl", "scott", "tiger");
TNSNAMES
entry. You can find the availableTNSNAMES
entries listed in the filetnsnames.ora
on the client computer from which you are connecting. For example, if you want to connect to the database on hostmyhost
as userscott
with passwordtiger
that has aTNSNAMES
entry ofMyHostString
, enter:Connection conn = DriverManager.getConnection ("jdbc:oracle:oci8:@MyHostString","scott","tiger");
Connection conn = DriverManager.getConnection ("jdbc:oracle:oci8:@","scott","tiger");
- Server-Side Thin Driver, which is functionally the same as the client-side Thin driver, but is for code that runs inside an Oracle server and needs to access a remote server, including middle-tier scenarios. The Server-Side Thin driver type is
thin
and there is no difference in your code between using the Thin driver from a client application or from inside a server. - Server-Side Internal Driver for code that runs inside the target server, that is, inside the Oracle server that it must access. The Server-Side Internal driver type is
kprb
and it actually runs within a default session. You are already "connected". Therefore the connection should never be closed.
To access the default connection, write:DriverManager.getConnection("jdbc:oracle:kprb:");
or:DriverManager.getConnection("jdbc:default:connection:");
OracleDriver ora = new OracleDriver(); Connection conn = ora.defaultConnection();
OracleDriver
class for connecting with the Server-Side Internal driver, although there is no harm in doing so. This is true whether you are usinggetConnection()
ordefaultConnection()
to make the connection.
Any user name or password you include in the URL string is ignored in connecting to the server default connection. TheDriverManager.getConnection()
method returns a new JavaConnection
object every time you call it. Note that although the method is not creating a new physical connection (only a single implicit connection is used), it is returning a new object.
Again, when JDBC code is running inside the target server, the connection is an implicit data channel, not an explicit connection instance as from a client. It should never be closed.
-
<section role="region">
</section>
<section role="region">
-
Field Summary
-
Fields inherited from class oracle.jdbc.driver.OracleDriver
access_string, accumulate_batch_result, batch_string, convert_nchar_literals_string, database_string, dataSizeBytes, dataSizeChars, dataSizeUnitsPropertyName, DEFAULT_CONNECTION_PROPERTIES, default_execute_batch_string, default_row_prefetch_string, defaultConn, defaultnchar_string, defaultncharprop_string, disable_defineColumnType_string, dll_string, execute_batch_string, fixed_string_string, include_synonyms_string, j2ee_compliance, jdbc_string, logon_as_internal_str, nls_lang_backdoor, no_caching_buffers, oracle_string, password_string, permit_timestamp_date_mismatch_string, prefetch_string, prelim_auth_string, process_escapes_string, protocol_string, protocolFullName_string, proxy_client_name, read_timeout, remarks_string, report_remarks_string, restrict_getTables_string, retain_v9_bind_behavior_string, row_prefetch_string, server_string, set_new_password_string, SetFloatAndDoubleUseBinary_string, synonyms_string, systemTypeMap, tcp_no_delay, useFetchSizeWithLongColumn_prop_string, useFetchSizeWithLongColumn_string, user_string, v8compatible_string, xa_trans_loose
-
-
Constructor Summary
Constructors Constructor Description OracleDriver()
-
Method Summary
All Methods Static Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static String
getBuildDate()
Returns a String that specifies exactly when the jar file was built.static String
getDriverVersion()
Returns a String that specifies the Oracle version number of the driver.static String
getJDBCVersion()
Returns a String that specifies the version of the JDBC spec supporte by the driver.static boolean
isDebug()
Returns true if this jar includes debug code.static boolean
isDMS()
Returns true if this jar includes DMS instrumentaion.static boolean
isInServer()
Returns true if this jar was built to run in the Oracle Java VM.static boolean
isJDK14()
Deprecated.static boolean
isPrivateDebug()
Returns true if this jar includes Oracle internal debug code.static void
main(String[] args)
Prints a description of the Oracle JDBC driver .jar file to System.out.-
Methods inherited from class oracle.jdbc.driver.OracleDriver
_INTERNAL_ORACLE_connectAsync, acceptsURL, connect, connect, defaultConnection, getCompileTime, getMajorVersion, getMinorVersion, getMonitorLock, getParentLogger, getPropertyInfo, getSystemPropertyDateZeroTime, getSystemPropertyFastConnectionFailover, jdbcCompliant, processSqlEscapes, registerMBeans, unRegisterMBeans
-
-
-
<section role="region">
</section>
<section role="region">
-
Method Detail
-
isDMS
public static final boolean isDMS()
Returns true if this jar includes DMS instrumentaion.- Returns:
- true if DMS jar
-
isInServer
public static final boolean isInServer()
Returns true if this jar was built to run in the Oracle Java VM.- Returns:
- true if server jar
-
isJDK14
public static final boolean isJDK14()
Deprecated.Returns true if this is a JDK 1.4 or later compliant jar. Since JDK 1.3 is desupported, always returns true.- Returns:
- true
-
isDebug
public static final boolean isDebug()
Returns true if this jar includes debug code.- Returns:
- true if debug jar
-
isPrivateDebug
public static final boolean isPrivateDebug()
Returns true if this jar includes Oracle internal debug code.- Returns:
- true if private debug jar
-
getJDBCVersion
public static final String getJDBCVersion()
Returns a String that specifies the version of the JDBC spec supporte by the driver.- Returns:
- JDBC spec version
-
getDriverVersion
public static final String getDriverVersion()
Returns a String that specifies the Oracle version number of the driver.- Returns:
- version number
-
getBuildDate
public static final String getBuildDate()
Returns a String that specifies exactly when the jar file was built.- Returns:
- build date
-
-