您的位置:首页 > 数据库 > Oracle

oracle的sys用户怎么通过jdbc连接

2012-03-02 11:07 656 查看
转自:http://jamesq.bokee.com/1263981.html

经过GOOGLE 总算知道了如何在JDBC中使用SYSDBA角色连接ORACLE数据库

在DriverManager.getConnection通过Properties 设置连接的defaultRowPrefetch,nternal_logon 等信息。

// -----------------------------------------------------------------------------
// ConnectionOptions.java
// -----------------------------------------------------------------------------

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

/**
* -----------------------------------------------------------------------------
* The following class provides an example of using jdbc to connect to an
* Oracle database using several advanced options. For example, one of the most
* used option is connecting to a database as SYSDBA. The following table
* contains
*
* 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 or SYSOPER,
*                                         that allows you to log on as SYS.
* 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 connection
*                                         setIncludeSynonyms() call.
*                                         (default value is "false")
*
* -----------------------------------------------------------------------------
*/

public class ConnectionOptions {

final static String driverClass    = "oracle.jdbc.driver.OracleDriver";
final static String connectionURL  = "jdbc:oracle:thin:@localhost:1521:TRUESRC";
final static String userID         = "scott";
final static String userPassword   = "tiger";
Connection   con                   = null;

/**
* Construct a QueryExample object. This constructor will create an Oracle
* database connection.
*/
public ConnectionOptions() {

Properties conProps = new Properties();
conProps.put("user", userID);
conProps.put("password", userPassword);
conProps.put("defaultRowPrefetch", "15");
conProps.put("internal_logon", "sysdba");

try {

System.out.print("  Loading jdbc Driver  -> " + driverClass + "n");
Class.forName(driverClass).newInstance();

System.out.print("  Connecting to        -> " + connectionURL + "n");
this.con = DriverManager.getConnection(connectionURL, conProps);
System.out.print("  Connected as         -> " + userID + "n");

} catch (ClassNotFoundException e) {
e.printStackTrace();
System.exit(1);
} catch (InstantiationException e) {
e.printStackTrace();
System.exit(1);
} catch (IllegalAccessException e) {
e.printStackTrace();
System.exit(1);
} catch (SQLException e) {
e.printStackTrace();
System.exit(1);
}

}

/**
* Method to check which database user we are logged in as
*/
public void performUserQuery() {

Statement stmt      = null;
ResultSet rset      = null;
String queryString  = "SELECT user, TO_CHAR(sysdate, 'DD-MON-YYYY HH24:MI:SS') " +
"FROM   dual";

try {

System.out.print("  Creating Statement...n");
stmt = con.createStatement ();

System.out.print("  Opening ResultsSet...n");
rset = stmt.executeQuery(queryString);

rset.next();
System.out.println("      Database User  -> " + rset.getString(1));
System.out.println("      Date / Time    -> " + rset.getString(2));

System.out.println();
System.out.print("  Closing ResultSet...n");
rset.close();

System.out.print("  Closing Statement...n");
stmt.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

/**
* Close down Oracle connection.
*/
public void closeConnection() {

try {
System.out.print("  Closing Connection...n");
con.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

/**
* Sole entry point to the class and application.
* @param args Array of String arguments.
*/
public static void main(String[] args) {

ConnectionOptions co = new ConnectionOptions();
co.performUserQuery();
co.closeConnection();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: