Hi Jaikiran, Please find code for debuggable statement class below,
And I think i didn't change any jar file. Please do the needful. | | package com.work.net; | | import java.io.InputStream; | import java.io.Reader; | import java.lang.reflect.InvocationTargetException; | import java.lang.reflect.Method; | import java.math.BigDecimal; | import java.net.URL; | import java.sql.Blob; | import java.sql.Clob; | import java.sql.Connection; | import java.sql.ParameterMetaData; | import java.sql.PreparedStatement; | import java.sql.Ref; | import java.sql.ResultSet; | import java.sql.ResultSetMetaData; | import java.sql.SQLException; | import java.sql.SQLWarning; | import java.sql.Time; | import java.sql.Timestamp; | import java.util.Calendar; | import java.util.StringTokenizer; | | | public class DebuggableStatement implements PreparedStatement { | | private PreparedStatement ps; //preparedStatement being proxied for. | private String sql; //original statement going to database. | private String filteredSql; | //statement filtered for rogue '?' that are not bind variables. | private DebugObject[] variables; //array of bind variables | private SqlFormatter formatter; //format for dates | private long startTime; //time that statement began execution | private long executeTime; //time elapsed while executing statement | private DebugLevel debugLevel; //level of debug | | | protected DebuggableStatement( | Connection con, | String sqlStatement, | SqlFormatter formatter, | DebugLevel debugLevel) | throws SQLException { | //set values for member variables | this.ps = con.prepareStatement(sqlStatement); | this.sql = sqlStatement; | this.debugLevel = debugLevel; | this.formatter = formatter; | | //see if there are any '?' in the statement that are not bind variables | //and filter them out. | boolean isString = false; | char[] sqlString = sqlStatement.toCharArray(); | for (int i = 0; i < sqlString.length; i++) { | if (sqlString == '\'') | isString = !isString; | //substitute the ? with an unprintable character if the ? is in a | //string. | if (sqlString == '?' && isString) | sqlString = '\u0007'; | } | filteredSql = new String(sqlString); | | //find out how many variables are present in statement. | int count = 0; | int index = -1; | while ((index = filteredSql.indexOf("?", index + 1)) != -1) { | count++; | } | | //show how many bind variables found | if (debugLevel == DebugLevel.VERBOSE) | System.out.println("count= " + count); | | //create array for bind variables | variables = new DebugObject[count]; | | } | | /** | * Facade for PreparedStatement | */ | public void addBatch() throws SQLException { | ps.addBatch(); | } | | /** | * Facade for PreparedStatement | */ | public void addBatch(String sql) throws SQLException { | ps.addBatch(); | } | | /** | * Facade for PreparedStatement | */ | public void cancel() throws SQLException { | ps.cancel(); | } | | /** | * Facade for PreparedStatement | */ | public void clearBatch() throws SQLException { | ps.clearBatch(); | } | | /** | * Facade for PreparedStatement | */ | public void clearParameters() throws SQLException { | ps.clearParameters(); | } | | /** | * Facade for PreparedStatement | */ | public void clearWarnings() throws SQLException { | ps.clearWarnings(); | } | | /** | * Facade for PreparedStatement | */ | public void close() throws SQLException { | ps.close(); | } | | /** | * Executes query and Calculates query execution time if DebugLevel = VERBOSE | * @return results of query | */ | public boolean execute() throws SQLException { | //execute query | Boolean results = null; | try { | results = (Boolean) executeVerboseQuery("execute", null); | } | catch (SQLException sqle) { | throw sqle; | } | catch (Exception e) { | e.printStackTrace(); | throw new SQLException("Could not execute sql command"); | } | return results.booleanValue(); | } | | /** | * This method is only here for convenience. If a different sql string is executed | * than was passed into Debuggable, unknown results will occur. | * Executes query and Calculates query execution time if DebugLevel = VERBOSE | * @param sql should be same string that was passed into Debuggable | * @return results of query | */ | public boolean execute(String sql) throws SQLException { | //execute query | Boolean results = null; | try { | results = | (Boolean) executeVerboseQuery("execute", | new Class[] { sql.getClass()}); | } | catch (SQLException sqle) { | throw sqle; | } | catch (Exception e) { | e.printStackTrace(); | throw new SQLException("Could not execute sql command"); | } | return results.booleanValue(); | } | | /** | * Executes query and Calculates query execution time if DebugLevel = VERBOSE | * @return results of query | */ | public int[] executeBatch() throws SQLException { | //execute query | int[] results = null; | try { | results = (int[]) executeVerboseQuery("executeBatch", null); | } | catch (SQLException sqle) { | throw sqle; | } | catch (Exception e) { | e.printStackTrace(); | throw new SQLException("Could not execute sql command"); | } | return results; | } | | /** | * Executes query and Calculates query execution time if DebugLevel = VERBOSE | * @return results of query | */ | public ResultSet executeQuery() throws SQLException { | //execute query | ResultSet results = null; | try { | results = (ResultSet) executeVerboseQuery("executeQuery", null); | } | catch (SQLException sqle) { | throw sqle; | } | catch (Exception e) { | e.printStackTrace(); | throw new SQLException("Could not execute sql command"); | } | return results; | } | | /** | * This method is only here for convenience. If a different sql string is executed | * than was passed into Debuggable, unknown results will occur. | * Executes query and Calculates query execution time if DebugLevel = VERBOSE | * @param sql should be same string that was passed into Debuggable | * @return results of query | */ | public ResultSet executeQuery(String sql) throws SQLException { | //execute query | ResultSet results = null; | try { | results = | (ResultSet) executeVerboseQuery("executeQuery", | new Class[] { sql.getClass()}); | } | catch (SQLException sqle) { | throw sqle; | } | catch (Exception e) { | e.printStackTrace(); | throw new SQLException("Could not execute sql command"); | } | return results; | } | | /** | * Executes query and Calculates query execution time if DebugLevel = VERBOSE | * @return results of query | */ | public int executeUpdate() throws SQLException { | //execute query | Integer results = null; | try { | results = (Integer) executeVerboseQuery("executeUpdate", null); | } | catch (SQLException sqle) { | throw sqle; | } | catch (Exception e) { | e.printStackTrace(); | throw new SQLException("Could not execute sql command"); | } | return results.intValue(); | } | | /** | * This method is only here for convenience. If a different sql string is executed | * than was passed into Debuggable, unknown results will occur. | * Executes query and Calculates query execution time if DebugLevel = VERBOSE | * @param sql should be same string that was passed into Debuggable | * @return results of query | */ | public int executeUpdate(String sql) throws SQLException { | //execute query | Integer results = null; | try { | results = | (Integer) executeVerboseQuery("executeUpdate", | new Class[] { sql.getClass()}); | } | catch (SQLException sqle) { | throw sqle; | } | catch (Exception e) { | e.printStackTrace(); | throw new SQLException("Could not execute sql command"); | } | return results.intValue(); | } | | /** | * Facade for PreparedStatement | */ | public Connection getConnection() throws SQLException { | return ps.getConnection(); | } | | /** | * Facade for PreparedStatement | */ | public int getFetchDirection() throws SQLException { | return ps.getFetchDirection(); | } | | /** | * Facade for PreparedStatement | */ | public int getFetchSize() throws SQLException { | return ps.getFetchSize(); | } | | /** | * Facade for PreparedStatement | */ | public int getMaxFieldSize() throws SQLException { | return ps.getMaxFieldSize(); | } | | /** | * Facade for PreparedStatement | */ | public int getMaxRows() throws SQLException { | return ps.getMaxRows(); | } | | /** | * Facade for PreparedStatement | */ | public ResultSetMetaData getMetaData() throws SQLException { | return ps.getMetaData(); | } | | /** | * Facade for PreparedStatement | */ | public boolean getMoreResults() throws SQLException { | return ps.getMoreResults(); | } | | /** | * Facade for PreparedStatement | */ | public int getQueryTimeout() throws SQLException { | return ps.getQueryTimeout(); | } | | /** | * Facade for PreparedStatement | */ | public ResultSet getResultSet() throws SQLException { | return ps.getResultSet(); | } | | /** | * Facade for PreparedStatement | */ | public int getResultSetConcurrency() throws SQLException { | return ps.getResultSetConcurrency(); | } | | /** | * Facade for PreparedStatement | */ | public int getResultSetType() throws SQLException { | return ps.getResultSetType(); | } | | /** | * Facade for PreparedStatement | */ | public String getStatement() { | return sql; | } | | /** | * Facade for PreparedStatement | */ | public int getUpdateCount() throws SQLException { | return ps.getUpdateCount(); | } | | /** | * Facade for PreparedStatement | */ | public SQLWarning getWarnings() throws SQLException { | return ps.getWarnings(); | } | | /** | * Tests Object o for parameterIndex (which parameter is being set) and places | * object in array of variables. | * @param parameterIndex which PreparedStatement parameter is being set. | * Sequence begins at 1. | * @param o Object being stored as parameter | * @exception Thrown if index exceeds number of variables. | */ | private void saveObject(int parameterIndex, Object o) | throws ParameterIndexOutOfBoundsException { | if (parameterIndex > variables.length) | throw new ParameterIndexOutOfBoundsException( | "Parameter index of " | + parameterIndex | + " exceeds actual parameter count of " | + variables.length); | | variables[parameterIndex - 1] = new DebugObject(o); | } | | /** | Adds name of the Array's internal class type(by using x.getBaseTypeName()) | to the debug String. If x is null, NULL is added to debug String. | @param i index of parameter | @param x parameter Object | */ | public void setArray(int i, java.sql.Array x) throws SQLException { | saveObject(i, x); | ps.setArray(i, x); | } | | /** | Debug string prints NULL if InputStream is null, or adds "stream length = " + length | */ | public void setAsciiStream(int parameterIndex, InputStream x, int length) | throws SQLException { | saveObject( | parameterIndex, | (x == null ? "NULL" : "<stream length= " + length + ">")); | ps.setAsciiStream(parameterIndex, x, length); | } | | /** | Adds BigDecimal to debug string in parameterIndex position. | @param parameterIndex index of parameter | @param x parameter Object | */ | public void setBigDecimal(int parameterIndex, BigDecimal x) | throws SQLException { | saveObject(parameterIndex, x); | ps.setBigDecimal(parameterIndex, x); | } | | /** | Debug string prints NULL if InputStream is null, or adds "stream length= " + length. | @param parameterIndex index of parameter | @param x parameter Object | @param length length of InputStream | */ | public void setBinaryStream(int parameterIndex, InputStream x, int length) | throws SQLException { | saveObject( | parameterIndex, | (x == null ? "NULL" : "<stream length= " + length + ">")); | ps.setBinaryStream(parameterIndex, x, length); | } | | /** | Adds name of the object's class type(Blob) to the debug String. If | object is null, NULL is added to debug String. | @param parameterIndex index of parameter | @param x parameter Object | */ | public void setBlob(int parameterIndex, Blob x) throws SQLException { | saveObject(parameterIndex, x); | ps.setBlob(parameterIndex, x); | } | | /** | Adds boolean to debug string in parameterIndex position. | @param parameterIndex index of parameter | @param x parameter Object | */ | public void setBoolean(int parameterIndex, boolean x) throws SQLException { | saveObject(parameterIndex, new Boolean(x)); | ps.setBoolean(parameterIndex, x); | } | | /** | Adds byte to debug string in parameterIndex position. | @param parameterIndex index of parameter | @param x parameter Object | */ | public void setByte(int parameterIndex, byte x) throws SQLException { | saveObject(parameterIndex, new Byte(x)); | ps.setByte(parameterIndex, x); | } | | /** | Adds byte[] to debug string in parameterIndex position. | @param parameterIndex index of parameter | @param x parameter Object | */ | public void setBytes(int parameterIndex, byte[] x) throws SQLException { | saveObject( | parameterIndex, | (x == null ? "NULL" : "byte[] length=" + x.length)); | ps.setBytes(parameterIndex, x); | } | | /** | Debug string prints NULL if reader is null, or adds "stream length= " + length. | @param parameterIndex index of parameter | @param x parameter Object | @param length length of InputStream | */ | public void setCharacterStream( | int parameterIndex, | Reader reader, | int length) | throws SQLException { | saveObject( | parameterIndex, | (reader == null ? "NULL" : "<stream length= " + length + ">")); | ps.setCharacterStream(parameterIndex, reader, length); | } | | /** | Adds name of the object's class type(Clob) to the debug String. If | object is null, NULL is added to debug String. | @param parameterIndex index of parameter | @param x parameter Object | */ | public void setClob(int i, Clob x) throws SQLException { | saveObject(i, x); | ps.setClob(i, x); | } | | public void setCursorName(String name) throws SQLException { | ps.setCursorName(name); | } | | /** | Debug string displays date in YYYY-MM-DD HH24:MI:SS.# format. | @param parameterIndex index of parameter | @param x parameter Object | */ | public void setDate(int parameterIndex, java.sql.Date x) | throws SQLException { | saveObject(parameterIndex, x); | ps.setDate(parameterIndex, x); | } | | /** | this implementation assumes that the Date has the date, and the | calendar has the local info. For the debug string, the cal date | is set to the date of x. Debug string displays date in YYYY-MM-DD HH24:MI:SS.# format. | @param parameterIndex index of parameter | @param x parameter Object | @param cal uses x to set time | */ | public void setDate(int parameterIndex, java.sql.Date x, Calendar cal) | throws SQLException { | cal.setTime(new java.util.Date(x.getTime())); | saveObject(parameterIndex, cal); | ps.setDate(parameterIndex, x, cal); | } | | /** | Adds double to debug string in parameterIndex position. | @param parameterIndex index of parameter | @param x parameter Object | */ | public void setDouble(int parameterIndex, double x) throws SQLException { | saveObject(parameterIndex, new Double(x)); | ps.setDouble(parameterIndex, x); | } | | /** | * Facade for PreparedStatement | */ | public void setEscapeProcessing(boolean enable) throws SQLException { | ps.setEscapeProcessing(enable); | } | | /** | * Facade for PreparedStatement | */ | public void setFormatter(SqlFormatter formatter) { | this.formatter = formatter; | } | | /** | * Facade for PreparedStatement | */ | public void setFetchDirection(int direction) throws SQLException { | ps.setFetchDirection(direction); | } | | /** | * Facade for PreparedStatement | */ | public void setFetchSize(int rows) throws SQLException { | ps.setFetchSize(rows); | } | | /** | Adds float to debug string in parameterIndex position. | @param parameterIndex index of parameter | @param x parameter Object | */ | public void setFloat(int parameterIndex, float x) throws SQLException { | saveObject(parameterIndex, new Float(x)); | ps.setFloat(parameterIndex, x); | } | | /** | Adds int to debug string in parameterIndex position. | @param parameterIndex index of parameter | @param x parameter Object | */ | public void setInt(int parameterIndex, int x) throws SQLException { | saveObject(parameterIndex, new Integer(x)); | ps.setInt(parameterIndex, x); | } | | /** | Adds long to debug string in parameterIndex position. | @param parameterIndex index of parameter | @param x parameter Object | */ | public void setLong(int parameterIndex, long x) throws SQLException { | saveObject(parameterIndex, new Long(x)); | ps.setLong(parameterIndex, x); | } | | /** | * Facade for PreparedStatement | */ | public void setMaxFieldSize(int max) throws SQLException { | ps.setMaxFieldSize(max); | } | | /** | * Facade for PreparedStatement | */ | public void setMaxRows(int max) throws SQLException { | ps.setMaxRows(max); | } | | /** | Adds a NULL to the debug String. | @param parameterIndex index of parameter | @param x parameter Object | */ | public void setNull(int parameterIndex, int sqlType) throws SQLException { | saveObject(parameterIndex, "NULL"); | ps.setNull(parameterIndex, sqlType); | } | | /** | Adds a NULL to the debug String. | @param parameterIndex index of parameter | @param x parameter Object | @param typeName type of Object | */ | public void setNull(int parameterIndex, int sqlType, String typeName) | throws SQLException { | saveObject(parameterIndex, "NULL"); | ps.setNull(parameterIndex, sqlType, typeName); | } | | /** | Adds name of the object's class type to the debug String. If | object is null, NULL is added to debug String. | @param parameterIndex index of parameter | @param x parameter Object | */ | public void setObject(int parameterIndex, Object x) throws SQLException { | saveObject( | parameterIndex, | (x == null ? "NULL" : x.getClass().getName())); | ps.setObject(parameterIndex, x); | } | | /** | Adds name of the object's class type to the debug String. If | object is null, NULL is added to debug String. | @param parameterIndex index of parameter | @param x parameter Object | @param targetSqlType database type | */ | public void setObject(int parameterIndex, Object x, int targetSqlType) | throws SQLException { | saveObject( | parameterIndex, | (x == null ? "NULL" : x.getClass().getName())); | ps.setObject(parameterIndex, x, targetSqlType); | } | | /** | Adds name of the object's class type to the debug String. If | object is null, NULL is added to debug String. | @param parameterIndex index of parameter | @param x parameter Object | @param targetSqlType database type | @param scale see PreparedStatement | */ | public void setObject( | int parameterIndex, | Object x, | int targetSqlType, | int scale) | throws SQLException { | saveObject( | parameterIndex, | (x == null ? "NULL" : x.getClass().getName())); | ps.setObject(parameterIndex, x, targetSqlType, scale); | } | | /** | * Facade for PreparedStatement | */ | public void setQueryTimeout(int seconds) throws SQLException { | ps.setQueryTimeout(seconds); | } | | /** | From the javadocs: | A reference to an SQL structured type value in the database. | A Ref can be saved to persistent storage. | The output from this method call in DebuggableStatement is a string representation | of the Ref object by calling the Ref object's getBaseTypeName() method. | Again, this will only be a String representation of the actual object | being stored in the database. | @param i index of parameter | @param x parameter Object | */ | | public void setRef(int i, Ref x) throws SQLException { | saveObject(i, x); | ps.setRef(i, x); | } | | /** | Adds short to debug string in parameterIndex position. | @param parameterIndex index of parameter | @param x parameter Object | */ | public void setShort(int parameterIndex, short x) throws SQLException { | saveObject(parameterIndex, new Short(x)); | ps.setShort(parameterIndex, x); | } | | /** | Adds String to debug string in parameterIndex position. | If String is null "NULL" is inserted in debug string. | ****note**** | In situations where a single ' is in the string being | inserted in the database. The debug string will need to be modified to | reflect this when running the debug statement in the database. | @param parameterIndex index of parameter | @param x parameter Object | */ | public void setString(int parameterIndex, String x) throws SQLException { | saveObject(parameterIndex, x); | ps.setString(parameterIndex, x); | } | | /** | Debug string displays Time in HH24:MI:SS.# format. | @param parameterIndex index of parameter | @param x parameter Object | */ | public void setTime(int parameterIndex, Time x) throws SQLException { | saveObject(parameterIndex, x); | ps.setTime(parameterIndex, x); | } | | /** | This implementation assumes that the Time object has the time and | Calendar has the locale info. For the debug string, the cal time | is set to the value of x. Debug string displays time in HH24:MI:SS.# format. | @param parameterIndex index of parameter | @param x parameter Object | @param cal sets time based on x | */ | public void setTime(int parameterIndex, Time x, Calendar cal) | throws SQLException { | cal.setTime(new java.util.Date(x.getTime())); | saveObject(parameterIndex, cal); | ps.setTime(parameterIndex, x, cal); | } | | /** | Debug string displays timestamp in YYYY-MM-DD HH24:MI:SS.# format. | @param parameterIndex index of parameter | @param x parameter Object | */ | public void setTimestamp(int parameterIndex, Timestamp x) | throws SQLException { | saveObject(parameterIndex, x); | ps.setTimestamp(parameterIndex, x); | } | | /** | This implementation assumes that the Timestamp has the date/time and | Calendar has the locale info. For the debug string, the cal date/time | is set to the default value of Timestamp which is YYYY-MM-DD HH24:MI:SS.#. | Debug string displays timestamp in DateFormat.LONG format. | @param parameterIndex index of parameter | @param x parameter Object | @param cal sets time based on x | */ | public void setTimestamp(int parameterIndex, Timestamp x, Calendar cal) | throws SQLException { | cal.setTime(new java.util.Date(x.getTime())); | saveObject(parameterIndex, cal); | ps.setTimestamp(parameterIndex, x, cal); | } | | /** | Method has been deprecated in PreparedStatement interface. | This method is present only to satisfy interface and does | not do anything. | Do not use... | */ | public void setUnicodeStream(int parameterIndex, InputStream x, int length) | throws SQLException { | //ps.setUnicodeStream(parameterIndex, x, length); | } | | /** | this toString is overidden to return a String representation of | the sql statement being sent to the database. If a bind variable | is missing then the String contains a ? + (missing variable #) | @return the above string representation | */ | | public String toString() { | StringTokenizer st = new StringTokenizer(filteredSql, "?"); | int count = 1; | StringBuffer statement = new StringBuffer(); | while (st.hasMoreTokens()) { | statement.append(st.nextToken()); | if (count <= variables.length) { | if (variables[count - 1] != null | && variables[count - 1].isValueAssigned()) { | try { | statement.append( | formatter.format(variables[count - 1])); | | } | catch (SQLException e) { | statement.append("SQLException"); | } | } | else { | statement.append( | "? " + "(missing variable # " + count + " ) "); | } | } | count++; | } | //unfilter the string in case there where rogue '?' in query string. | char[] unfilterSql = statement.toString().toCharArray(); | for (int i = 0; i < unfilterSql.length; i++) { | if (unfilterSql == '\u0007') | unfilterSql = '?'; | } | | //return execute time | if (debugLevel == DebugLevel.ON) | return new String(unfilterSql); | else | return new String(unfilterSql) | + System.getProperty("line.separator") | + System.getProperty("line.separator") | + "query executed in " | + executeTime | + " milliseconds" | + System.getProperty("line.separator"); | | } | | private Object executeVerboseQuery(String methodName, Class[] parameters) | throws | SQLException, | NoSuchMethodException, | InvocationTargetException, | IllegalAccessException { | //determine which method we have | Method m = ps.getClass().getDeclaredMethod(methodName, parameters); | | /* //debug is set to on, so no times are calculated | if (debugLevel == DebugLevel.ON) | return m.invoke(ps,parameters); | */ | //calculate execution time for verbose debugging | start(); | // Object returnObject = m.invoke(ps,parameters); | Object returnObject = null; | if (methodName.equals("executeUpdate")) { | int i = ps.executeUpdate(); | returnObject = new Integer(i); | } | else { | returnObject = m.invoke(ps, parameters); | } | end(); | | //return the executions return type | return returnObject; | } | | private void start() { | startTime = System.currentTimeMillis(); | } | | private void end() { | executeTime = System.currentTimeMillis() - startTime; | } | | private class DebugObject { | private Object debugObject; | private SqlFormatter formatter = new OracleSqlFormatter(); | private boolean valueAssigned; | | public DebugObject(Object debugObject) { | this.debugObject = debugObject; | valueAssigned = true; | } | | public Object getDebugObject() { | return debugObject; | } | | public boolean isValueAssigned() { | return valueAssigned; | } | | public String toString() { | String a = ""; | try { | a = formatter.format(debugObject); | } | catch (SQLException sqle) { | sqle.printStackTrace(); | } | finally { | } | return a; | } | } | | | //********* New methods are implemented, because we're going to use J2SDK1.4.2 for | //********* the Rheumatology Application, and in 1.4.2, there are following new methods | //********* which must be implemented if we implement the PreparedStatement interface. | | | /* (non-Javadoc) | * @see java.sql.Statement#getMoreResults(int) | */ | public boolean getMoreResults(int current) throws SQLException { | return false; | } | | /* (non-Javadoc) | * @see java.sql.PreparedStatement#getParameterMetaData() | */ | public ParameterMetaData getParameterMetaData() throws SQLException { | return null; | } | | /* (non-Javadoc) | * @see java.sql.PreparedStatement#setURL(int, java.net.URL) | */ | public void setURL(int parameterIndex, URL x) throws SQLException { | | } | | /* (non-Javadoc) | * @see java.sql.Statement#execute(java.lang.String, int) | */ | public boolean execute(String sql, int autoGeneratedKeys) | throws SQLException { | return false; | } | | /* (non-Javadoc) | * @see java.sql.Statement#execute(java.lang.String, int[]) | */ | public boolean execute(String sql, int[] columnIndexes) | throws SQLException { | return false; | } | | /* (non-Javadoc) | * @see java.sql.Statement#execute(java.lang.String, java.lang.String[]) | */ | public boolean execute(String sql, String[] columnNames) | throws SQLException { | return false; | } | | /* (non-Javadoc) | * @see java.sql.Statement#executeUpdate(java.lang.String, int) | */ | public int executeUpdate(String sql, int autoGeneratedKeys) | throws SQLException { | return 0; | } | | /* (non-Javadoc) | * @see java.sql.Statement#executeUpdate(java.lang.String, int[]) | */ | public int executeUpdate(String sql, int[] columnIndexes) | throws SQLException { | return 0; | } | | /* (non-Javadoc) | * @see java.sql.Statement#executeUpdate(java.lang.String, java.lang.String[]) | */ | public int executeUpdate(String sql, String[] columnNames) | throws SQLException { | return 0; | } | | /* (non-Javadoc) | * @see java.sql.Statement#getGeneratedKeys() | */ | public ResultSet getGeneratedKeys() throws SQLException { | return null; | } | | /* (non-Javadoc) | * @see java.sql.Statement#getResultSetHoldability() | */ | public int getResultSetHoldability() throws SQLException { | return 0; | } | | } | | | View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4136617#4136617 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4136617 _______________________________________________ jboss-user mailing list jboss-user@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jboss-user