PreparedStatementWrapper.java
上传用户:sxlinghang
上传日期:2022-07-20
资源大小:1405k
文件大小:25k
源码类别:

数据库编程

开发平台:

Java

  1. /*
  2.    Copyright (C) 2004 MySQL AB
  3.       This program is free software; you can redistribute it and/or modify
  4.       it under the terms of the GNU General Public License as published by
  5.       the Free Software Foundation; either version 2 of the License, or
  6.       (at your option) any later version.
  7.       This program is distributed in the hope that it will be useful,
  8.       but WITHOUT ANY WARRANTY; without even the implied warranty of
  9.       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  10.       GNU General Public License for more details.
  11.       You should have received a copy of the GNU General Public License
  12.       along with this program; if not, write to the Free Software
  13.       Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  14.  */
  15. package com.mysql.jdbc.jdbc2.optional;
  16. import com.mysql.jdbc.SQLError;
  17. import java.io.InputStream;
  18. import java.io.Reader;
  19. import java.math.BigDecimal;
  20. import java.net.URL;
  21. import java.sql.Array;
  22. import java.sql.Blob;
  23. import java.sql.Clob;
  24. import java.sql.Date;
  25. import java.sql.ParameterMetaData;
  26. import java.sql.PreparedStatement;
  27. import java.sql.Ref;
  28. import java.sql.ResultSet;
  29. import java.sql.ResultSetMetaData;
  30. import java.sql.SQLException;
  31. import java.sql.Time;
  32. import java.sql.Timestamp;
  33. import java.util.Calendar;
  34. /**
  35.  * Wraps prepared statements so that errors can be reported correctly to 
  36.  * ConnectionEventListeners.
  37.  *
  38.  * @author Mark Matthews
  39.  * 
  40.  * @version $Id: PreparedStatementWrapper.java,v 1.1.2.1 2004/02/13 17:55:30 mmatthew Exp $
  41.  */
  42. class PreparedStatementWrapper extends StatementWrapper
  43.     implements PreparedStatement {
  44.     PreparedStatementWrapper(MysqlPooledConnection conn,
  45.         PreparedStatement toWrap) {
  46.         super(conn, toWrap);
  47.     }
  48.     /* (non-Javadoc)
  49.      * @see java.sql.PreparedStatement#setArray(int, java.sql.Array)
  50.      */
  51.     public void setArray(int parameterIndex, Array x) throws SQLException {
  52.         try {
  53.             if (this.wrappedStmt != null) {
  54.                 ((PreparedStatement) this.wrappedStmt).setArray(parameterIndex,
  55.                     x);
  56.             } else {
  57.                 throw new SQLException("No operations allowed after statement closed",
  58.                     SQLError.SQL_STATE_GENERAL_ERROR);
  59.             }
  60.         } catch (SQLException sqlEx) {
  61.             checkAndFireConnectionError(sqlEx);
  62.         }
  63.     }
  64.     /* (non-Javadoc)
  65.      * @see java.sql.PreparedStatement#setAsciiStream(int, java.io.InputStream, int)
  66.      */
  67.     public void setAsciiStream(int parameterIndex, InputStream x, int length)
  68.         throws SQLException {
  69.         try {
  70.             if (this.wrappedStmt != null) {
  71.                 ((PreparedStatement) this.wrappedStmt).setAsciiStream(parameterIndex,
  72.                     x, length);
  73.             } else {
  74.                 throw new SQLException("No operations allowed after statement closed",
  75.                     SQLError.SQL_STATE_GENERAL_ERROR);
  76.             }
  77.         } catch (SQLException sqlEx) {
  78.             checkAndFireConnectionError(sqlEx);
  79.         }
  80.     }
  81.     /* (non-Javadoc)
  82.      * @see java.sql.PreparedStatement#setBigDecimal(int, java.math.BigDecimal)
  83.      */
  84.     public void setBigDecimal(int parameterIndex, BigDecimal x)
  85.         throws SQLException {
  86.         try {
  87.             if (this.wrappedStmt != null) {
  88.                 ((PreparedStatement) this.wrappedStmt).setBigDecimal(parameterIndex,
  89.                     x);
  90.             } else {
  91.                 throw new SQLException("No operations allowed after statement closed",
  92.                     SQLError.SQL_STATE_GENERAL_ERROR);
  93.             }
  94.         } catch (SQLException sqlEx) {
  95.             checkAndFireConnectionError(sqlEx);
  96.         }
  97.     }
  98.     /* (non-Javadoc)
  99.      * @see java.sql.PreparedStatement#setBinaryStream(int, java.io.InputStream, int)
  100.      */
  101.     public void setBinaryStream(int parameterIndex, InputStream x, int length)
  102.         throws SQLException {
  103.         try {
  104.             if (this.wrappedStmt != null) {
  105.                 ((PreparedStatement) this.wrappedStmt).setBinaryStream(parameterIndex,
  106.                     x, length);
  107.             } else {
  108.                 throw new SQLException("No operations allowed after statement closed",
  109.                     SQLError.SQL_STATE_GENERAL_ERROR);
  110.             }
  111.         } catch (SQLException sqlEx) {
  112.             checkAndFireConnectionError(sqlEx);
  113.         }
  114.     }
  115.     /* (non-Javadoc)
  116.      * @see java.sql.PreparedStatement#setBlob(int, java.sql.Blob)
  117.      */
  118.     public void setBlob(int parameterIndex, Blob x) throws SQLException {
  119.         try {
  120.             if (this.wrappedStmt != null) {
  121.                 ((PreparedStatement) this.wrappedStmt).setBlob(parameterIndex, x);
  122.             } else {
  123.                 throw new SQLException("No operations allowed after statement closed",
  124.                     SQLError.SQL_STATE_GENERAL_ERROR);
  125.             }
  126.         } catch (SQLException sqlEx) {
  127.             checkAndFireConnectionError(sqlEx);
  128.         }
  129.     }
  130.     /* (non-Javadoc)
  131.      * @see java.sql.PreparedStatement#setBoolean(int, boolean)
  132.      */
  133.     public void setBoolean(int parameterIndex, boolean x)
  134.         throws SQLException {
  135.         try {
  136.             if (this.wrappedStmt != null) {
  137.                 ((PreparedStatement) this.wrappedStmt).setBoolean(parameterIndex,
  138.                     x);
  139.             } else {
  140.                 throw new SQLException("No operations allowed after statement closed",
  141.                     SQLError.SQL_STATE_GENERAL_ERROR);
  142.             }
  143.         } catch (SQLException sqlEx) {
  144.             checkAndFireConnectionError(sqlEx);
  145.         }
  146.     }
  147.     /* (non-Javadoc)
  148.      * @see java.sql.PreparedStatement#setByte(int, byte)
  149.      */
  150.     public void setByte(int parameterIndex, byte x) throws SQLException {
  151.         try {
  152.             if (this.wrappedStmt != null) {
  153.                 ((PreparedStatement) this.wrappedStmt).setByte(parameterIndex, x);
  154.             } else {
  155.                 throw new SQLException("No operations allowed after statement closed",
  156.                     SQLError.SQL_STATE_GENERAL_ERROR);
  157.             }
  158.         } catch (SQLException sqlEx) {
  159.             checkAndFireConnectionError(sqlEx);
  160.         }
  161.     }
  162.     /* (non-Javadoc)
  163.      * @see java.sql.PreparedStatement#setBytes(int, byte[])
  164.      */
  165.     public void setBytes(int parameterIndex, byte[] x)
  166.         throws SQLException {
  167.         try {
  168.             if (this.wrappedStmt != null) {
  169.                 ((PreparedStatement) this.wrappedStmt).setBytes(parameterIndex,
  170.                     x);
  171.             } else {
  172.                 throw new SQLException("No operations allowed after statement closed",
  173.                     SQLError.SQL_STATE_GENERAL_ERROR);
  174.             }
  175.         } catch (SQLException sqlEx) {
  176.             checkAndFireConnectionError(sqlEx);
  177.         }
  178.     }
  179.     /* (non-Javadoc)
  180.      * @see java.sql.PreparedStatement#setCharacterStream(int, java.io.Reader, int)
  181.      */
  182.     public void setCharacterStream(int parameterIndex, Reader reader, int length)
  183.         throws SQLException {
  184.         try {
  185.             if (this.wrappedStmt != null) {
  186.                 ((PreparedStatement) this.wrappedStmt).setCharacterStream(parameterIndex,
  187.                     reader, length);
  188.             } else {
  189.                 throw new SQLException("No operations allowed after statement closed",
  190.                     SQLError.SQL_STATE_GENERAL_ERROR);
  191.             }
  192.         } catch (SQLException sqlEx) {
  193.             checkAndFireConnectionError(sqlEx);
  194.         }
  195.     }
  196.     /* (non-Javadoc)
  197.      * @see java.sql.PreparedStatement#setClob(int, java.sql.Clob)
  198.      */
  199.     public void setClob(int parameterIndex, Clob x) throws SQLException {
  200.         try {
  201.             if (this.wrappedStmt != null) {
  202.                 ((PreparedStatement) this.wrappedStmt).setClob(parameterIndex, x);
  203.             } else {
  204.                 throw new SQLException("No operations allowed after statement closed",
  205.                     SQLError.SQL_STATE_GENERAL_ERROR);
  206.             }
  207.         } catch (SQLException sqlEx) {
  208.             checkAndFireConnectionError(sqlEx);
  209.         }
  210.     }
  211.     /* (non-Javadoc)
  212.      * @see java.sql.PreparedStatement#setDate(int, java.sql.Date)
  213.      */
  214.     public void setDate(int parameterIndex, Date x) throws SQLException {
  215.         try {
  216.             if (this.wrappedStmt != null) {
  217.                 ((PreparedStatement) this.wrappedStmt).setDate(parameterIndex, x);
  218.             } else {
  219.                 throw new SQLException("No operations allowed after statement closed",
  220.                     SQLError.SQL_STATE_GENERAL_ERROR);
  221.             }
  222.         } catch (SQLException sqlEx) {
  223.             checkAndFireConnectionError(sqlEx);
  224.         }
  225.     }
  226.     /* (non-Javadoc)
  227.      * @see java.sql.PreparedStatement#setDate(int, java.sql.Date, java.util.Calendar)
  228.      */
  229.     public void setDate(int parameterIndex, Date x, Calendar cal)
  230.         throws SQLException {
  231.         try {
  232.             if (this.wrappedStmt != null) {
  233.                 ((PreparedStatement) this.wrappedStmt).setDate(parameterIndex,
  234.                     x, cal);
  235.             } else {
  236.                 throw new SQLException("No operations allowed after statement closed",
  237.                     SQLError.SQL_STATE_GENERAL_ERROR);
  238.             }
  239.         } catch (SQLException sqlEx) {
  240.             checkAndFireConnectionError(sqlEx);
  241.         }
  242.     }
  243.     /* (non-Javadoc)
  244.      * @see java.sql.PreparedStatement#setDouble(int, double)
  245.      */
  246.     public void setDouble(int parameterIndex, double x)
  247.         throws SQLException {
  248.         try {
  249.             if (this.wrappedStmt != null) {
  250.                 ((PreparedStatement) this.wrappedStmt).setDouble(parameterIndex,
  251.                     x);
  252.             } else {
  253.                 throw new SQLException("No operations allowed after statement closed",
  254.                     SQLError.SQL_STATE_GENERAL_ERROR);
  255.             }
  256.         } catch (SQLException sqlEx) {
  257.             checkAndFireConnectionError(sqlEx);
  258.         }
  259.     }
  260.     /* (non-Javadoc)
  261.      * @see java.sql.PreparedStatement#setFloat(int, float)
  262.      */
  263.     public void setFloat(int parameterIndex, float x) throws SQLException {
  264.         try {
  265.             if (this.wrappedStmt != null) {
  266.                 ((PreparedStatement) this.wrappedStmt).setFloat(parameterIndex,
  267.                     x);
  268.             } else {
  269.                 throw new SQLException("No operations allowed after statement closed",
  270.                     SQLError.SQL_STATE_GENERAL_ERROR);
  271.             }
  272.         } catch (SQLException sqlEx) {
  273.             checkAndFireConnectionError(sqlEx);
  274.         }
  275.     }
  276.     /* (non-Javadoc)
  277.      * @see java.sql.PreparedStatement#setInt(int, int)
  278.      */
  279.     public void setInt(int parameterIndex, int x) throws SQLException {
  280.         try {
  281.             if (this.wrappedStmt != null) {
  282.                 ((PreparedStatement) this.wrappedStmt).setInt(parameterIndex, x);
  283.             } else {
  284.                 throw new SQLException("No operations allowed after statement closed",
  285.                     SQLError.SQL_STATE_GENERAL_ERROR);
  286.             }
  287.         } catch (SQLException sqlEx) {
  288.             checkAndFireConnectionError(sqlEx);
  289.         }
  290.     }
  291.     /* (non-Javadoc)
  292.      * @see java.sql.PreparedStatement#setLong(int, long)
  293.      */
  294.     public void setLong(int parameterIndex, long x) throws SQLException {
  295.         try {
  296.             if (this.wrappedStmt != null) {
  297.                 ((PreparedStatement) this.wrappedStmt).setLong(parameterIndex, x);
  298.             } else {
  299.                 throw new SQLException("No operations allowed after statement closed",
  300.                     SQLError.SQL_STATE_GENERAL_ERROR);
  301.             }
  302.         } catch (SQLException sqlEx) {
  303.             checkAndFireConnectionError(sqlEx);
  304.         }
  305.     }
  306.     /* (non-Javadoc)
  307.      * @see java.sql.PreparedStatement#getMetaData()
  308.      */
  309.     public ResultSetMetaData getMetaData() throws SQLException {
  310.         try {
  311.             if (this.wrappedStmt != null) {
  312.                 return ((PreparedStatement) this.wrappedStmt).getMetaData();
  313.             } else {
  314.                 throw new SQLException("No operations allowed after statement closed",
  315.                     SQLError.SQL_STATE_GENERAL_ERROR);
  316.             }
  317.         } catch (SQLException sqlEx) {
  318.             checkAndFireConnectionError(sqlEx);
  319.         }
  320.         return null;
  321.     }
  322.     /* (non-Javadoc)
  323.      * @see java.sql.PreparedStatement#setNull(int, int)
  324.      */
  325.     public void setNull(int parameterIndex, int sqlType)
  326.         throws SQLException {
  327.         try {
  328.             if (this.wrappedStmt != null) {
  329.                 ((PreparedStatement) this.wrappedStmt).setNull(parameterIndex,
  330.                     sqlType);
  331.             } else {
  332.                 throw new SQLException("No operations allowed after statement closed",
  333.                     SQLError.SQL_STATE_GENERAL_ERROR);
  334.             }
  335.         } catch (SQLException sqlEx) {
  336.             checkAndFireConnectionError(sqlEx);
  337.         }
  338.     }
  339.     /* (non-Javadoc)
  340.      * @see java.sql.PreparedStatement#setNull(int, int, java.lang.String)
  341.      */
  342.     public void setNull(int parameterIndex, int sqlType, String typeName)
  343.         throws SQLException {
  344.         try {
  345.             if (this.wrappedStmt != null) {
  346.                 ((PreparedStatement) this.wrappedStmt).setNull(parameterIndex,
  347.                     sqlType, typeName);
  348.             } else {
  349.                 throw new SQLException("No operations allowed after statement closed",
  350.                     SQLError.SQL_STATE_GENERAL_ERROR);
  351.             }
  352.         } catch (SQLException sqlEx) {
  353.             checkAndFireConnectionError(sqlEx);
  354.         }
  355.     }
  356.     /* (non-Javadoc)
  357.      * @see java.sql.PreparedStatement#setObject(int, java.lang.Object)
  358.      */
  359.     public void setObject(int parameterIndex, Object x)
  360.         throws SQLException {
  361.         try {
  362.             if (this.wrappedStmt != null) {
  363.                 ((PreparedStatement) this.wrappedStmt).setObject(parameterIndex,
  364.                     x);
  365.             } else {
  366.                 throw new SQLException("No operations allowed after statement closed",
  367.                     SQLError.SQL_STATE_GENERAL_ERROR);
  368.             }
  369.         } catch (SQLException sqlEx) {
  370.             checkAndFireConnectionError(sqlEx);
  371.         }
  372.     }
  373.     /* (non-Javadoc)
  374.      * @see java.sql.PreparedStatement#setObject(int, java.lang.Object, int)
  375.      */
  376.     public void setObject(int parameterIndex, Object x, int targetSqlType)
  377.         throws SQLException {
  378.         try {
  379.             if (this.wrappedStmt != null) {
  380.                 ((PreparedStatement) this.wrappedStmt).setObject(parameterIndex,
  381.                     x, targetSqlType);
  382.             } else {
  383.                 throw new SQLException("No operations allowed after statement closed",
  384.                     SQLError.SQL_STATE_GENERAL_ERROR);
  385.             }
  386.         } catch (SQLException sqlEx) {
  387.             checkAndFireConnectionError(sqlEx);
  388.         }
  389.     }
  390.     /* (non-Javadoc)
  391.      * @see java.sql.PreparedStatement#setObject(int, java.lang.Object, int, int)
  392.      */
  393.     public void setObject(int parameterIndex, Object x, int targetSqlType,
  394.         int scale) throws SQLException {
  395.         try {
  396.             if (this.wrappedStmt != null) {
  397.                 ((PreparedStatement) this.wrappedStmt).setObject(parameterIndex,
  398.                     x, scale);
  399.             } else {
  400.                 throw new SQLException("No operations allowed after statement closed",
  401.                     SQLError.SQL_STATE_GENERAL_ERROR);
  402.             }
  403.         } catch (SQLException sqlEx) {
  404.             checkAndFireConnectionError(sqlEx);
  405.         }
  406.     }
  407.     /* (non-Javadoc)
  408.      * @see java.sql.PreparedStatement#getParameterMetaData()
  409.      */
  410.     public ParameterMetaData getParameterMetaData() throws SQLException {
  411.         try {
  412.             if (this.wrappedStmt != null) {
  413.                 return ((PreparedStatement) this.wrappedStmt)
  414.                 .getParameterMetaData();
  415.             } else {
  416.                 throw new SQLException("No operations allowed after statement closed",
  417.                     SQLError.SQL_STATE_GENERAL_ERROR);
  418.             }
  419.         } catch (SQLException sqlEx) {
  420.             checkAndFireConnectionError(sqlEx);
  421.         }
  422.         return null;
  423.     }
  424.     /* (non-Javadoc)
  425.      * @see java.sql.PreparedStatement#setRef(int, java.sql.Ref)
  426.      */
  427.     public void setRef(int parameterIndex, Ref x) throws SQLException {
  428.         try {
  429.             if (this.wrappedStmt != null) {
  430.                 ((PreparedStatement) this.wrappedStmt).setRef(parameterIndex, x);
  431.             } else {
  432.                 throw new SQLException("No operations allowed after statement closed",
  433.                     SQLError.SQL_STATE_GENERAL_ERROR);
  434.             }
  435.         } catch (SQLException sqlEx) {
  436.             checkAndFireConnectionError(sqlEx);
  437.         }
  438.     }
  439.     /* (non-Javadoc)
  440.      * @see java.sql.PreparedStatement#setShort(int, short)
  441.      */
  442.     public void setShort(int parameterIndex, short x) throws SQLException {
  443.         try {
  444.             if (this.wrappedStmt != null) {
  445.                 ((PreparedStatement) this.wrappedStmt).setShort(parameterIndex,
  446.                     x);
  447.             } else {
  448.                 throw new SQLException("No operations allowed after statement closed",
  449.                     SQLError.SQL_STATE_GENERAL_ERROR);
  450.             }
  451.         } catch (SQLException sqlEx) {
  452.             checkAndFireConnectionError(sqlEx);
  453.         }
  454.     }
  455.     /* (non-Javadoc)
  456.      * @see java.sql.PreparedStatement#setString(int, java.lang.String)
  457.      */
  458.     public void setString(int parameterIndex, String x)
  459.         throws SQLException {
  460.         try {
  461.             if (this.wrappedStmt != null) {
  462.                 ((PreparedStatement) this.wrappedStmt).setString(parameterIndex,
  463.                     x);
  464.             } else {
  465.                 throw new SQLException("No operations allowed after statement closed",
  466.                     SQLError.SQL_STATE_GENERAL_ERROR);
  467.             }
  468.         } catch (SQLException sqlEx) {
  469.             checkAndFireConnectionError(sqlEx);
  470.         }
  471.     }
  472.     /* (non-Javadoc)
  473.      * @see java.sql.PreparedStatement#setTime(int, java.sql.Time)
  474.      */
  475.     public void setTime(int parameterIndex, Time x) throws SQLException {
  476.         try {
  477.             if (this.wrappedStmt != null) {
  478.                 ((PreparedStatement) this.wrappedStmt).setTime(parameterIndex, x);
  479.             } else {
  480.                 throw new SQLException("No operations allowed after statement closed",
  481.                     SQLError.SQL_STATE_GENERAL_ERROR);
  482.             }
  483.         } catch (SQLException sqlEx) {
  484.             checkAndFireConnectionError(sqlEx);
  485.         }
  486.     }
  487.     /* (non-Javadoc)
  488.      * @see java.sql.PreparedStatement#setTime(int, java.sql.Time, java.util.Calendar)
  489.      */
  490.     public void setTime(int parameterIndex, Time x, Calendar cal)
  491.         throws SQLException {
  492.         try {
  493.             if (this.wrappedStmt != null) {
  494.                 ((PreparedStatement) this.wrappedStmt).setTime(parameterIndex,
  495.                     x, cal);
  496.             } else {
  497.                 throw new SQLException("No operations allowed after statement closed",
  498.                     SQLError.SQL_STATE_GENERAL_ERROR);
  499.             }
  500.         } catch (SQLException sqlEx) {
  501.             checkAndFireConnectionError(sqlEx);
  502.         }
  503.     }
  504.     /* (non-Javadoc)
  505.      * @see java.sql.PreparedStatement#setTimestamp(int, java.sql.Timestamp)
  506.      */
  507.     public void setTimestamp(int parameterIndex, Timestamp x)
  508.         throws SQLException {
  509.         try {
  510.             if (this.wrappedStmt != null) {
  511.                 ((PreparedStatement) this.wrappedStmt).setTimestamp(parameterIndex,
  512.                     x);
  513.             } else {
  514.                 throw new SQLException("No operations allowed after statement closed",
  515.                     SQLError.SQL_STATE_GENERAL_ERROR);
  516.             }
  517.         } catch (SQLException sqlEx) {
  518.             checkAndFireConnectionError(sqlEx);
  519.         }
  520.     }
  521.     /* (non-Javadoc)
  522.      * @see java.sql.PreparedStatement#setTimestamp(int, java.sql.Timestamp, java.util.Calendar)
  523.      */
  524.     public void setTimestamp(int parameterIndex, Timestamp x, Calendar cal)
  525.         throws SQLException {
  526.         try {
  527.             if (this.wrappedStmt != null) {
  528.                 ((PreparedStatement) this.wrappedStmt).setTimestamp(parameterIndex,
  529.                     x, cal);
  530.             } else {
  531.                 throw new SQLException("No operations allowed after statement closed",
  532.                     SQLError.SQL_STATE_GENERAL_ERROR);
  533.             }
  534.         } catch (SQLException sqlEx) {
  535.             checkAndFireConnectionError(sqlEx);
  536.         }
  537.     }
  538.     /* (non-Javadoc)
  539.      * @see java.sql.PreparedStatement#setURL(int, java.net.URL)
  540.      */
  541.     public void setURL(int parameterIndex, URL x) throws SQLException {
  542.         try {
  543.             if (this.wrappedStmt != null) {
  544.                 ((PreparedStatement) this.wrappedStmt).setURL(parameterIndex, x);
  545.             } else {
  546.                 throw new SQLException("No operations allowed after statement closed",
  547.                     SQLError.SQL_STATE_GENERAL_ERROR);
  548.             }
  549.         } catch (SQLException sqlEx) {
  550.             checkAndFireConnectionError(sqlEx);
  551.         }
  552.     }
  553.     /**
  554.      * DOCUMENT ME!
  555.      *
  556.      * @param parameterIndex DOCUMENT ME!
  557.      * @param x DOCUMENT ME!
  558.      * @param length DOCUMENT ME!
  559.      *
  560.      * @throws SQLException DOCUMENT ME!
  561.      *
  562.      * @see java.sql.PreparedStatement#setUnicodeStream(int,
  563.      *      java.io.InputStream, int)
  564.      * @deprecated
  565.      */
  566.     public void setUnicodeStream(int parameterIndex, InputStream x, int length)
  567.         throws SQLException {
  568.         try {
  569.             if (this.wrappedStmt != null) {
  570.                 ((PreparedStatement) this.wrappedStmt).setUnicodeStream(parameterIndex,
  571.                     x, length);
  572.             } else {
  573.                 throw new SQLException("No operations allowed after statement closed",
  574.                     SQLError.SQL_STATE_GENERAL_ERROR);
  575.             }
  576.         } catch (SQLException sqlEx) {
  577.             checkAndFireConnectionError(sqlEx);
  578.         }
  579.     }
  580.     /* (non-Javadoc)
  581.      * @see java.sql.PreparedStatement#addBatch()
  582.      */
  583.     public void addBatch() throws SQLException {
  584.         try {
  585.             if (this.wrappedStmt != null) {
  586.                 ((PreparedStatement) this.wrappedStmt).addBatch();
  587.             } else {
  588.                 throw new SQLException("No operations allowed after statement closed",
  589.                     SQLError.SQL_STATE_GENERAL_ERROR);
  590.             }
  591.         } catch (SQLException sqlEx) {
  592.             checkAndFireConnectionError(sqlEx);
  593.         }
  594.     }
  595.     /* (non-Javadoc)
  596.      * @see java.sql.PreparedStatement#clearParameters()
  597.      */
  598.     public void clearParameters() throws SQLException {
  599.         try {
  600.             if (this.wrappedStmt != null) {
  601.                 ((PreparedStatement) this.wrappedStmt).clearParameters();
  602.             } else {
  603.                 throw new SQLException("No operations allowed after statement closed",
  604.                     SQLError.SQL_STATE_GENERAL_ERROR);
  605.             }
  606.         } catch (SQLException sqlEx) {
  607.             checkAndFireConnectionError(sqlEx);
  608.         }
  609.     }
  610.     /* (non-Javadoc)
  611.      * @see java.sql.PreparedStatement#execute()
  612.      */
  613.     public boolean execute() throws SQLException {
  614.         try {
  615.             if (this.wrappedStmt != null) {
  616.                 return ((PreparedStatement) this.wrappedStmt).execute();
  617.             } else {
  618.                 throw new SQLException("No operations allowed after statement closed",
  619.                     SQLError.SQL_STATE_GENERAL_ERROR);
  620.             }
  621.         } catch (SQLException sqlEx) {
  622.             checkAndFireConnectionError(sqlEx);
  623.         }
  624.         return false; // we actually never get here, but the compiler can't figure 
  625.         // that out
  626.     }
  627.     /* (non-Javadoc)
  628.      * @see java.sql.PreparedStatement#executeQuery()
  629.      */
  630.     public ResultSet executeQuery() throws SQLException {
  631.         try {
  632.             if (this.wrappedStmt != null) {
  633.                 return ((PreparedStatement) this.wrappedStmt).executeQuery();
  634.             } else {
  635.                 throw new SQLException("No operations allowed after statement closed",
  636.                     SQLError.SQL_STATE_GENERAL_ERROR);
  637.             }
  638.         } catch (SQLException sqlEx) {
  639.             checkAndFireConnectionError(sqlEx);
  640.         }
  641.         return null; // we actually never get here, but the compiler can't figure 
  642.         // that out
  643.     }
  644.     /* (non-Javadoc)
  645.      * @see java.sql.PreparedStatement#executeUpdate()
  646.      */
  647.     public int executeUpdate() throws SQLException {
  648.         try {
  649.             if (this.wrappedStmt != null) {
  650.                 return ((PreparedStatement) this.wrappedStmt).executeUpdate();
  651.             } else {
  652.                 throw new SQLException("No operations allowed after statement closed",
  653.                     SQLError.SQL_STATE_GENERAL_ERROR);
  654.             }
  655.         } catch (SQLException sqlEx) {
  656.             checkAndFireConnectionError(sqlEx);
  657.         }
  658.         return -1; // we actually never get here, but the compiler can't figure 
  659.         // that out
  660.     }
  661. }