home *** CD-ROM | disk | FTP | other *** search
- package sun.jdbc.odbc;
-
- import java.sql.CallableStatement;
- import java.sql.DatabaseMetaData;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.SQLWarning;
- import java.sql.Statement;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.Properties;
-
- public class JdbcOdbcConnection extends JdbcOdbcObject implements JdbcOdbcConnectionInterface {
- protected JdbcOdbc OdbcApi;
- protected JdbcOdbcDriverInterface myDriver;
- protected int hEnv;
- protected int hDbc;
- protected SQLWarning lastWarning;
- protected boolean closed;
- protected String URL;
- protected int odbcVer;
- protected Hashtable typeInfo;
- protected Hashtable statements;
-
- public JdbcOdbcConnection(JdbcOdbc var1, int var2, JdbcOdbcDriverInterface var3) {
- this.OdbcApi = var1;
- this.myDriver = var3;
- this.hEnv = var2;
- this.hDbc = 0;
- this.URL = null;
- this.lastWarning = null;
- this.closed = true;
- }
-
- protected void finalize() {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("Connection.finalize " + this);
- }
-
- try {
- this.close();
- } catch (SQLException var1) {
- }
- }
-
- public void initialize(String var1, Properties var2, int var3) throws SQLException {
- String var6 = "";
- if (this.closed) {
- this.hDbc = this.myDriver.allocConnection(this.hEnv);
- }
-
- if (var3 > 0) {
- this.setLoginTimeout(var3);
- }
-
- String var4 = var2.getProperty("user", "");
- String var5 = var2.getProperty("password", "");
- var6 = "DSN=" + var1;
- if (var4 != null) {
- var6 = var6 + ";UID=" + var4;
- }
-
- if (var5 != null) {
- var6 = var6 + ";PWD=" + var5;
- }
-
- try {
- this.OdbcApi.SQLDriverConnect(this.hDbc, var6);
- } catch (SQLWarning var8) {
- this.lastWarning = var8;
- } catch (SQLException var9) {
- this.myDriver.closeConnection(this.hDbc);
- throw var9;
- }
-
- this.closed = false;
- this.statements = new Hashtable();
- if (JdbcOdbcObject.isTracing()) {
- DatabaseMetaData var7 = this.getMetaData();
- JdbcOdbcObject.trace("Driver name: " + var7.getDriverName());
- JdbcOdbcObject.trace("Driver version: " + var7.getDriverVersion());
- }
-
- this.buildTypeInfo();
- }
-
- public Statement createStatement() throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Connection.createStatement");
- }
-
- JdbcOdbcStatement var1 = new JdbcOdbcStatement(this);
- var1.initialize(this.OdbcApi, this.hDbc);
- this.registerStatement(var1);
- return var1;
- }
-
- public PreparedStatement prepareStatement(String var1) throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Connection.prepareStatement (" + var1 + ")");
- }
-
- Object var3 = null;
- SQLWarning var4 = null;
- int var2 = this.OdbcApi.SQLAllocStmt(this.hDbc);
-
- try {
- this.OdbcApi.SQLPrepare(var2, var1);
- } catch (SQLWarning var6) {
- var4 = var6;
- } catch (SQLException var7) {
- this.OdbcApi.SQLFreeStmt(var2, 1);
- throw var7;
- }
-
- JdbcOdbcPreparedStatement var8 = new JdbcOdbcPreparedStatement(this);
- var8.initialize(this.OdbcApi, this.hDbc, var2, this.typeInfo);
- ((JdbcOdbcStatement)var8).setWarning(var4);
- this.registerStatement(var8);
- return var8;
- }
-
- public CallableStatement prepareCall(String var1) throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Connection.prepareCall (" + var1 + ")");
- }
-
- Object var3 = null;
- SQLWarning var4 = null;
- int var2 = this.OdbcApi.SQLAllocStmt(this.hDbc);
-
- try {
- this.OdbcApi.SQLPrepare(var2, var1);
- } catch (SQLWarning var6) {
- var4 = var6;
- } catch (SQLException var7) {
- this.OdbcApi.SQLFreeStmt(var2, 1);
- throw var7;
- }
-
- JdbcOdbcCallableStatement var8 = new JdbcOdbcCallableStatement(this);
- ((JdbcOdbcPreparedStatement)var8).initialize(this.OdbcApi, this.hDbc, var2, this.typeInfo);
- ((JdbcOdbcStatement)var8).setWarning(var4);
- this.registerStatement(var8);
- return var8;
- }
-
- public String nativeSQL(String var1) throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Connection.nativeSQL (" + var1 + ")");
- }
-
- String var2;
- try {
- var2 = this.OdbcApi.SQLNativeSql(this.hDbc, var1);
- } catch (SQLException var3) {
- var2 = var1;
- }
-
- return var2;
- }
-
- public void setAutoCommit(boolean var1) throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Connection.setAutoCommit (" + var1 + ")");
- }
-
- byte var2 = 1;
- this.validateConnection();
- if (!var1) {
- var2 = 0;
- }
-
- this.OdbcApi.SQLSetConnectOption(this.hDbc, (short)102, var2);
- }
-
- public boolean getAutoCommit() throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Connection.getAutoCommit");
- }
-
- boolean var2 = false;
- this.validateConnection();
- int var1 = this.OdbcApi.SQLGetConnectOption(this.hDbc, (short)102);
- if (var1 == 1) {
- var2 = true;
- }
-
- return var2;
- }
-
- public void commit() throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Connection.commit");
- }
-
- this.OdbcApi.SQLTransact(this.hEnv, this.hDbc, (short)0);
- }
-
- public void rollback() throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Connection.rollback");
- }
-
- this.OdbcApi.SQLTransact(this.hEnv, this.hDbc, (short)1);
- }
-
- public void close() throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Connection.close");
- }
-
- this.closeAllStatements();
- if (!this.closed) {
- this.myDriver.disconnect(this.hDbc);
- this.myDriver.closeConnection(this.hDbc);
- }
-
- this.closed = true;
- this.URL = null;
- }
-
- public boolean isClosed() throws SQLException {
- return this.closed;
- }
-
- public DatabaseMetaData getMetaData() throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Connection.getMetaData");
- }
-
- this.validateConnection();
- JdbcOdbcDatabaseMetaData var1 = new JdbcOdbcDatabaseMetaData(this.OdbcApi, this);
- return var1;
- }
-
- public void setReadOnly(boolean var1) throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Connection.setReadOnly (" + var1 + ")");
- }
-
- byte var2 = 0;
- this.validateConnection();
- if (var1) {
- var2 = 1;
- }
-
- try {
- this.OdbcApi.SQLSetConnectOption(this.hDbc, (short)101, var2);
- } catch (SQLException var3) {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("setReadOnly exception ignored");
- }
-
- }
- }
-
- public boolean isReadOnly() throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Connection.isReadOnly");
- }
-
- boolean var2 = false;
- this.validateConnection();
- int var1 = this.OdbcApi.SQLGetConnectOption(this.hDbc, (short)101);
- if (var1 == 1) {
- var2 = true;
- }
-
- return var2;
- }
-
- public void setCatalog(String var1) throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Connection.setCatalog (" + var1 + ")");
- }
-
- this.validateConnection();
- this.OdbcApi.SQLSetConnectOption(this.hDbc, (short)109, var1);
- }
-
- public String getCatalog() throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Connection.getCatalog");
- }
-
- this.validateConnection();
- return this.OdbcApi.SQLGetInfoString(this.hDbc, (short)16);
- }
-
- public void setTransactionIsolation(int var1) throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Connection.setTransactionIsolation (" + var1 + ")");
- }
-
- this.validateConnection();
- switch (var1) {
- case 0:
- this.setAutoCommit(true);
- return;
- case 1:
- this.setAutoCommit(false);
- this.OdbcApi.SQLSetConnectOption(this.hDbc, (short)108, 1);
- return;
- case 2:
- this.setAutoCommit(false);
- this.OdbcApi.SQLSetConnectOption(this.hDbc, (short)108, 2);
- return;
- case 4:
- this.setAutoCommit(false);
- this.OdbcApi.SQLSetConnectOption(this.hDbc, (short)108, 4);
- return;
- case 8:
- this.setAutoCommit(false);
- this.OdbcApi.SQLSetConnectOption(this.hDbc, (short)108, 8);
- return;
- default:
- this.setAutoCommit(false);
- this.OdbcApi.SQLSetConnectOption(this.hDbc, (short)108, var1);
- }
- }
-
- public int getTransactionIsolation() throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Connection.getTransactionIsolation");
- }
-
- int var1 = 0;
- this.validateConnection();
- int var2 = this.OdbcApi.SQLGetConnectOption(this.hDbc, (short)108);
- switch (var2) {
- case 1:
- var1 = 1;
- break;
- case 2:
- var1 = 2;
- break;
- case 4:
- var1 = 4;
- break;
- case 8:
- var1 = 8;
- break;
- default:
- var1 = var2;
- }
-
- return var1;
- }
-
- public SQLWarning getWarnings() throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Connection.getWarnings");
- }
-
- return this.lastWarning;
- }
-
- public void clearWarnings() throws SQLException {
- this.lastWarning = null;
- }
-
- public void validateConnection() throws SQLException {
- if (this.isClosed()) {
- throw new SQLException("Connection is closed");
- }
- }
-
- public int getHDBC() {
- return this.hDbc;
- }
-
- public void setURL(String var1) {
- this.URL = var1;
- }
-
- public String getURL() {
- return this.URL;
- }
-
- protected void setLoginTimeout(int var1) throws SQLException {
- this.OdbcApi.SQLSetConnectOption(this.hDbc, (short)103, var1);
- }
-
- public int getODBCVer() {
- if (this.odbcVer == 0) {
- String var1;
- try {
- var1 = this.OdbcApi.SQLGetInfoString(this.hDbc, (short)10);
- } catch (SQLException var3) {
- var1 = "-1";
- }
-
- Integer var2 = new Integer(var1.substring(0, 2));
- this.odbcVer = var2;
- }
-
- return this.odbcVer;
- }
-
- protected void buildTypeInfo() throws SQLException {
- this.typeInfo = new Hashtable();
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("Caching SQL type information");
- }
-
- ResultSet var1 = this.getMetaData().getTypeInfo();
-
- for(boolean var4 = var1.next(); var4; var4 = var1.next()) {
- String var5 = var1.getString(1);
- int var3 = var1.getInt(2);
- if (this.typeInfo.get(new Integer(var3)) == null) {
- JdbcOdbcTypeInfo var2 = new JdbcOdbcTypeInfo();
- var2.setName(var5);
- var2.setPrec(var1.getInt(3));
- this.typeInfo.put(new Integer(var3), var2);
- }
- }
-
- var1.close();
- }
-
- protected void registerStatement(Statement var1) {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("Registering Statement " + var1);
- }
-
- this.statements.put(var1, "");
- }
-
- public void deregisterStatement(Statement var1) {
- if (this.statements.get(var1) != null) {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("deregistering Statement " + var1);
- }
-
- this.statements.remove(var1);
- }
-
- }
-
- public synchronized void closeAllStatements() throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace(this.statements.size() + " Statement(s) to close");
- }
-
- if (this.statements.size() != 0) {
- Enumeration var1 = this.statements.keys();
-
- while(var1.hasMoreElements()) {
- Statement var2 = (Statement)var1.nextElement();
- var2.close();
- }
-
- }
- }
- }
-