/**
         * Frees the associated result.
         *
         * @return true on success or false on failure
         */
        public bool freeResult()
        {
            JdbcResultResource rs = _rs;

            _rs = null;

            if (rs != null)
            {
                rs.close();
            }

            return(true);
        }
  public bool bind(Env env, JdbcResultResource rs)
    
  {
    if (!_isValid) {
      // this matches php behaviour
      _var.set(env.getEmptyString());
    }
    else {
      Value value;

      if (_type != null) {
        value = rs.getColumnValue(env, _column, _type.getType());
      }
      else {
        value = rs.getColumnValue(env, _column);
      }

      _var.set(value);
    }

    return true;
  }
        protected bool execute(Env env, bool isCatchException)

        {
            if (_stmt == null)
            {
                return(false);
            }

            try {
                prepareForExecute(env);

                if (executeImpl(env))
                {
                    _conn.setAffectedRows(0);

                    ResultSet resultSet = _stmt.getResultSet();
                    _rs = createResultSet(resultSet);
                }
                else
                {
                    _conn.setAffectedRows(_stmt.getUpdateCount());
                }

                return(true);
            }
            catch (SQLException e) {
                if (isCatchException)
                {
                    setError(env, e);

                    return(false);
                }

                throw e;
            }
        }
        /**
         * Closes the result set, if any, and closes this statement.
         */
        protected bool close()
        {
            try {
                JdbcResultResource rs = _rs;
                _rs = null;

                if (rs != null)
                {
                    rs.close();
                }

                if (_stmt != null)
                {
                    _stmt.close();
                }

                return(true);
            }
            catch (SQLException e) {
                log.log(Level.FINE, e.ToString(), e);

                return(false);
            }
        }
 protected void setResultSet(ResultSet rs)
 {
     _rs = createResultSet(rs);
 }
        /**
         * Execute a single query.
         */
        protected Value realQuery(Env env, string sql)
        {
            clearErrors();

            _rs = null;

            Statement stmt = _freeStmt;

            _freeStmt = null;

            try {
                Connection conn = getConnection(env);

                if (conn == null)
                {
                    return(BooleanValue.FALSE);
                }

                if (checkSql(env, _conn, sql))
                {
                    return(BooleanValue.TRUE);
                }

                // statement reuse does not gain performance significantly (< 1%)
                // php/142v
                if (true || stmt == null)
                {
                    // XXX: test for performance

                    bool isSeekable = isSeekable();
                    if (isSeekable)
                    {
                        stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                                                    ResultSet.CONCUR_READ_ONLY);
                    }
                    else
                    {
                        stmt = conn.createStatement();
                    }

                    stmt.setEscapeProcessing(false); // php/1406
                }

                if (stmt.execute(sql))
                {
                    // Statement.execute(String) returns true when SQL statement @is a
                    // SELECT statement that returns a result set.

                    ResultSet rs = stmt.getResultSet();
                    _rs           = createResult(stmt, rs);
                    _affectedRows = 0;

                    // XXX: if these are needed, get them lazily for performance
                    // _warnings = stmt.getWarnings();
                }
                else
                {
                    // Statement.execute(String) returns false when SQL statement does
                    // not returns a result set (UPDATE, INSERT, DELETE, or REPLACE).

                    // php/430a should return a result set
                    // for update statements. It @is always
                    // null though. So keep the stmt for
                    // future reference (PostgresModule.pg_last_oid)

                    // php/1f33

                    // This @is overriden in Postgres.java
                    keepResourceValues(stmt);

                    _affectedRows = 0;
                    _affectedRows = stmt.getUpdateCount();
                    if (_rs != null)
                    {
                        _rs.setAffectedRows(_affectedRows);
                    }

                    // XXX: if these are needed, get them lazily for performance
                    // _warnings = stmt.getWarnings();

                    // for php/430a
                    if (keepStatementOpen())
                    {
                        _savedStmt = stmt;
                    }
                    else
                    {
                        // _warnings = stmt.getWarnings();
                        _freeStmt = stmt;
                    }
                }
            } catch (DataTruncation truncationError) {
                saveErrors(truncationError);

                try {
                    _affectedRows = stmt.getUpdateCount();
                    //_warnings = stmt.getWarnings();
                } catch (SQLException e) {
                    //saveErrors(e);
                    log.log(Level.FINEST, e.ToString(), e);
                    return(BooleanValue.FALSE);
                }
            } catch (SQLException e) {
                saveErrors(e);

                // php/431h
                if (keepStatementOpen())
                {
                    keepResourceValues(stmt);
                }
                else
                {
                    log.log(Level.FINEST, e.ToString(), e);
                    return(BooleanValue.FALSE);
                }
            } catch (IllegalStateException e) {
                // #2184, some drivers return this on closed connection
                saveErrors(new SQLExceptionWrapper(e));

                return(BooleanValue.FALSE);
            }

            if (_rs == null)
            {
                return(BooleanValue.TRUE);
            }

            return(env.wrapJava(_rs));
        }
 /**
  * Set the current result resource
  */
 protected void setResultResource(JdbcResultResource rs)
 {
     _rs = rs;
 }