/** * 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; }