home *** CD-ROM | disk | FTP | other *** search
- package sun.jdbc.odbc;
-
- import java.math.BigDecimal;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.SQLWarning;
- import java.sql.Statement;
- import java.util.Hashtable;
-
- public class JdbcOdbcStatement extends JdbcOdbcObject implements Statement {
- protected JdbcOdbc OdbcApi = null;
- protected int hDbc = 0;
- protected int hStmt = 0;
- protected SQLWarning lastWarning = null;
- protected Hashtable typeInfo;
- protected ResultSet myResultSet;
- protected JdbcOdbcConnectionInterface myConnection;
-
- public JdbcOdbcStatement(JdbcOdbcConnectionInterface var1) {
- this.myConnection = var1;
- }
-
- protected void finalize() {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("Statement.finalize " + this);
- }
-
- try {
- this.close();
- } catch (SQLException var1) {
- }
- }
-
- public void initialize(JdbcOdbc var1, int var2) throws SQLException {
- int var3 = var1.SQLAllocStmt(var2);
- this.initialize(var1, var2, var3, (Hashtable)null);
- }
-
- public void initialize(JdbcOdbc var1, int var2, int var3, Hashtable var4) throws SQLException {
- this.OdbcApi = var1;
- this.hDbc = var2;
- this.hStmt = var3;
- this.typeInfo = var4;
- }
-
- public ResultSet executeQuery(String var1) throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Statement.executeQuery (" + var1 + ")");
- }
-
- Object var2 = null;
- if (this.execute(var1)) {
- ResultSet var3 = this.getResultSet(false);
- return var3;
- } else {
- throw new SQLException("No ResultSet was produced");
- }
- }
-
- public int executeUpdate(String var1) throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Statement.executeUpdate (" + var1 + ")");
- }
-
- int var2 = -1;
- if (!this.execute(var1)) {
- var2 = this.getUpdateCount();
- return var2;
- } else {
- throw new SQLException("No row count was produced");
- }
- }
-
- public synchronized boolean execute(String var1) throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Statement.execute (" + var1 + ")");
- }
-
- boolean var2 = false;
- Object var3 = null;
- this.reset();
- this.lockIfNecessary(var1);
-
- try {
- this.OdbcApi.SQLExecDirect(this.hStmt, var1);
- } catch (SQLWarning var5) {
- }
-
- if (this.getColumnCount() > 0) {
- var2 = true;
- }
-
- return var2;
- }
-
- public ResultSet getResultSet() throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Statement.getResultSet");
- }
-
- return this.getResultSet(true);
- }
-
- public ResultSet getResultSet(boolean var1) throws SQLException {
- JdbcOdbcResultSet var2 = null;
- int var3 = 1;
- if (var1) {
- var3 = this.getColumnCount();
- }
-
- if (var3 > 0) {
- var2 = new JdbcOdbcResultSet();
- var2.initialize(this.OdbcApi, this.hDbc, this.hStmt, true, this);
- this.myResultSet = var2;
- } else {
- this.clearMyResultSet();
- }
-
- return var2;
- }
-
- public int getUpdateCount() throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Statement.getUpdateCount");
- }
-
- int var1 = -1;
- if (this.getColumnCount() == 0) {
- var1 = this.getRowCount();
- }
-
- return var1;
- }
-
- public synchronized void close() throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Statement.close");
- }
-
- this.clearMyResultSet();
-
- try {
- this.clearWarnings();
- if (this.hStmt != 0) {
- this.OdbcApi.SQLFreeStmt(this.hStmt, 1);
- this.hStmt = 0;
- }
- } catch (SQLException var1) {
- }
-
- this.myConnection.deregisterStatement(this);
- }
-
- protected void reset() throws SQLException {
- this.clearWarnings();
- if (this.myResultSet != null) {
- this.clearMyResultSet();
- } else {
- this.OdbcApi.SQLFreeStmt(this.hStmt, 0);
- }
- }
-
- public boolean getMoreResults() throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Statement.getMoreResults");
- }
-
- SQLWarning var1 = null;
- boolean var2 = false;
- this.clearWarnings();
-
- try {
- var2 = this.OdbcApi.SQLMoreResults(this.hStmt);
- } catch (SQLWarning var4) {
- var1 = var4;
- }
-
- if (var2 && this.getColumnCount() == 0) {
- var2 = false;
- }
-
- this.setWarning(var1);
- return var2;
- }
-
- public int getMaxFieldSize() throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Statement.getMaxFieldSize");
- }
-
- return this.getStmtOption((short)3);
- }
-
- public void setMaxFieldSize(int var1) throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Statement.setMaxFieldSize (" + var1 + ")");
- }
-
- this.OdbcApi.SQLSetStmtOption(this.hStmt, (short)3, var1);
- }
-
- public int getMaxRows() throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Statement.getMaxRows");
- }
-
- return this.getStmtOption((short)1);
- }
-
- public void setMaxRows(int var1) throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Statement.setMaxRows (" + var1 + ")");
- }
-
- this.OdbcApi.SQLSetStmtOption(this.hStmt, (short)1, var1);
- }
-
- public void setEscapeProcessing(boolean var1) throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Statement.setEscapeProcessing (" + var1 + ")");
- }
-
- byte var2 = 0;
- if (!var1) {
- var2 = 1;
- }
-
- this.OdbcApi.SQLSetStmtOption(this.hStmt, (short)2, var2);
- }
-
- public int getQueryTimeout() throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Statement.getQueryTimeout");
- }
-
- return this.getStmtOption((short)0);
- }
-
- public void setQueryTimeout(int var1) throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Statement.setQueryTimeout (" + var1 + ")");
- }
-
- this.OdbcApi.SQLSetStmtOption(this.hStmt, (short)0, var1);
- }
-
- public void cancel() throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Statement.cancel");
- }
-
- this.clearWarnings();
-
- try {
- this.OdbcApi.SQLCancel(this.hStmt);
- } catch (SQLWarning var2) {
- this.setWarning(var2);
- }
- }
-
- public SQLWarning getWarnings() throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Statement.getWarnings");
- }
-
- return this.lastWarning;
- }
-
- public void clearWarnings() throws SQLException {
- this.lastWarning = null;
- }
-
- public void setWarning(SQLWarning var1) throws SQLException {
- this.lastWarning = var1;
- }
-
- public void setCursorName(String var1) throws SQLException {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("*Statement.setCursorName " + var1 + ")");
- }
-
- this.OdbcApi.SQLSetCursorName(this.hStmt, var1);
- }
-
- protected int getStmtOption(short var1) throws SQLException {
- int var2 = 0;
- this.clearWarnings();
-
- try {
- var2 = this.OdbcApi.SQLGetStmtOption(this.hStmt, var1);
- } catch (JdbcOdbcSQLWarning var5) {
- BigDecimal var4 = (BigDecimal)var5.value;
- var2 = var4.intValue();
- this.setWarning(JdbcOdbc.convertWarning(var5));
- }
-
- return var2;
- }
-
- protected int getColumnCount() throws SQLException {
- int var1 = 0;
-
- try {
- var1 = this.OdbcApi.SQLNumResultCols(this.hStmt);
- } catch (JdbcOdbcSQLWarning var4) {
- BigDecimal var3 = (BigDecimal)var4.value;
- var1 = var3.intValue();
- }
-
- return var1;
- }
-
- protected int getRowCount() throws SQLException {
- int var1 = 0;
-
- try {
- var1 = this.OdbcApi.SQLRowCount(this.hStmt);
- } catch (JdbcOdbcSQLWarning var4) {
- BigDecimal var3 = (BigDecimal)var4.value;
- var1 = var3.intValue();
- }
-
- return var1;
- }
-
- protected boolean lockIfNecessary(String var1) throws SQLException {
- boolean var2 = false;
- String var3 = var1.toUpperCase();
- int var4 = var3.indexOf(" FOR UPDATE");
- if (var4 > 0) {
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("Setting concurrency for update");
- }
-
- try {
- this.OdbcApi.SQLSetStmtOption(this.hStmt, (short)7, 2);
- } catch (SQLWarning var6) {
- this.setWarning(var6);
- }
-
- var2 = true;
- }
-
- return var2;
- }
-
- protected int getPrecision(int var1) {
- int var2 = -1;
- if (this.typeInfo != null) {
- JdbcOdbcTypeInfo var3 = (JdbcOdbcTypeInfo)this.typeInfo.get(new Integer(var1));
- if (var3 != null) {
- var2 = var3.getPrec();
- }
- }
-
- return var2;
- }
-
- protected synchronized void clearMyResultSet() throws SQLException {
- if (this.myResultSet != null) {
- this.myResultSet.close();
- this.myResultSet = null;
- }
-
- }
- }
-