⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sqlprocessor.java

📁 Sequoia ERP是一个真正的企业级开源ERP解决方案。它提供的模块包括:电子商务应用(e-commerce), POS系统(point of sales),知识管理,存货与仓库管理
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    public ResultSet executeQuery(String sql) throws GenericDataSourceException, GenericEntityException {        prepareStatement(sql);        return executeQuery();    }    /**     * Execute updates     *     * @return  The number of rows updated     * @throws GenericDataSourceException     */    public int executeUpdate() throws GenericDataSourceException {        try {            // if (Debug.verboseOn()) Debug.logVerbose("[SQLProcessor.executeUpdate] ps=" + _ps.toString(), module);            return _ps.executeUpdate();        } catch (SQLException sqle) {            // don't display this here, may not be critical, allow handling further up... Debug.logError(sqle, "SQLProcessor.executeUpdate() : ERROR : ", module);            throw new GenericDataSourceException("SQL Exception while executing the following:" + _sql, sqle);        }    }    /**     * Execute update based on the SQL statement given     *     * @param sql  SQL statement to be executed     * @throws GenericDataSourceException     */    public int executeUpdate(String sql) throws GenericDataSourceException {        Statement stmt = null;        try {            stmt = _connection.createStatement();            return stmt.executeUpdate(sql);        } catch (SQLException sqle) {            Debug.logError(sqle, "SQLProcessor.executeUpdate(sql) : ERROR : ", module);            throw new GenericDataSourceException("SQL Exception while executing the following:" + _sql, sqle);        } finally {            if (stmt != null) {                try {                    stmt.close();                } catch (SQLException sqle) {                    Debug.logWarning("Unable to close 'statement': " + sqle.getMessage(), module);                }            }        }    }    /**     * Test if there more records available     *     * @return true, if there more records available     *     * @throws GenericDataSourceException     */    public boolean next() throws GenericDataSourceException {        try {            return _rs.next();        } catch (SQLException sqle) {            throw new GenericDataSourceException("SQL Exception while executing the following:" + _sql, sqle);        }    }    /**     * Getter: get the currently activ ResultSet     *     * @return ResultSet     */    public ResultSet getResultSet() {        return _rs;    }    /**     * Getter: get the prepared statement     *     * @return PreparedStatement     */    public PreparedStatement getPreparedStatement() {        return _ps;    }    /**     * Execute a query based on the SQL string given. For each record     * of the ResultSet return, execute a callback function     *     * @param sql       The SQL string to be executed     * @param aListener The callback function object     *     * @throws GenericEntityException     */    public void execQuery(String sql, ExecQueryCallbackFunctionIF aListener) throws GenericEntityException {        if (_connection == null) {            getConnection();        }        try {            if (Debug.verboseOn()) Debug.logVerbose("[SQLProcessor.execQuery]: " + sql, module);            executeQuery(sql);            // process the results by calling the listener for            // each row...            boolean keepGoing = true;            while (keepGoing && _rs.next()) {                keepGoing = aListener.processNextRow(_rs);            }            if (_manualTX) {                _connection.commit();            }        } catch (SQLException sqle) {            Debug.logWarning("[SQLProcessor.execQuery]: SQL Exception while executing the following:\n" +                sql + "\nError was:", module);            Debug.logWarning(sqle.getMessage(), module);            throw new GenericEntityException("SQL Exception while executing the following:" + _sql, sqle);        } finally {            close();        }    }    /**     * Set the next binding variable of the currently active prepared statement.     *     * @param field     *     * @throws SQLException     */    public void setValue(String field) throws SQLException {        //ResultSetMetaData rsmd = this.getResultSetMetaData();        //this doesn't seem to work, query not yet parsed: int colType = rsmd.getColumnType(_ind);        if (field != null) {            //if (field.length() > 4000) {                //Clob clb = new Cl                // doesn't work with Oracle drivers, need the funky work-around: _ps.setCharacterStream(_ind, new StringReader(field), field.length());                //_needClobWorkAroundWrite.put(new Integer(_ind), field);                //_ps.setString(_ind, " ");            //} else {                _ps.setString(_ind, field);            //}        } else {            // silly workaround for Derby (Cloudscape 10 beta Bug #5928)            // this should be removed after the know bug is fixed            try {                _ps.setNull(_ind, Types.VARCHAR);            } catch (SQLException e) {                try {                    _ps.setString(_ind, null);                } catch (SQLException e2) {                    Debug.logError(e2, module);                    throw e;                }            }        }        _ind++;    }    /**     * Set the next binding variable of the currently active prepared statement.     *     * @param field     *     * @throws SQLException     */    public void setValue(java.sql.Timestamp field) throws SQLException {        if (field != null) {            _ps.setTimestamp(_ind, field);        } else {            _ps.setNull(_ind, Types.TIMESTAMP);        }        _ind++;    }    /**     * Set the next binding variable of the currently active prepared statement.     *     * @param field     *     * @throws SQLException     */    public void setValue(java.sql.Time field) throws SQLException {        if (field != null) {            _ps.setTime(_ind, field);        } else {            _ps.setNull(_ind, Types.TIME);        }        _ind++;    }    /**     * Set the next binding variable of the currently active prepared statement.     *     * @param field     *     * @throws SQLException     */    public void setValue(java.sql.Date field) throws SQLException {        if (field != null) {            _ps.setDate(_ind, field);        } else {            _ps.setNull(_ind, Types.DATE);        }        _ind++;    }    /**     * Set the next binding variable of the currently active prepared statement.     *     * @param field     *     * @throws SQLException     */    public void setValue(Integer field) throws SQLException {        if (field != null) {            _ps.setInt(_ind, field.intValue());        } else {            _ps.setNull(_ind, Types.NUMERIC);        }        _ind++;    }    /**     * Set the next binding variable of the currently active prepared statement.     *     * @param field     *     * @throws SQLException     */    public void setValue(Long field) throws SQLException {        if (field != null) {            _ps.setLong(_ind, field.longValue());        } else {            _ps.setNull(_ind, Types.NUMERIC);        }        _ind++;    }    /**     * Set the next binding variable of the currently active prepared statement.     *     * @param field     *     * @throws SQLException     */    public void setValue(Float field) throws SQLException {        if (field != null) {            _ps.setFloat(_ind, field.floatValue());        } else {            _ps.setNull(_ind, Types.NUMERIC);        }        _ind++;    }    /**     * Set the next binding variable of the currently active prepared statement.     *     * @param field     *     * @throws SQLException     */    public void setValue(Double field) throws SQLException {        if (field != null) {            _ps.setDouble(_ind, field.doubleValue());        } else {            _ps.setNull(_ind, Types.NUMERIC);        }        _ind++;    }    /**     * Set the next binding variable of the currently active prepared statement.     *     * @param field     *     * @throws SQLException     */    public void setValue(BigDecimal field) throws SQLException {        if (field != null) {            _ps.setBigDecimal(_ind, field);        } else {            _ps.setNull(_ind, Types.NUMERIC);        }        _ind++;    }    /**     * Set the next binding variable of the currently active prepared statement.     *     * @param field     *     * @throws SQLException     */    public void setValue(Boolean field) throws SQLException {        if (field != null) {            _ps.setBoolean(_ind, field.booleanValue());        } else {            _ps.setNull(_ind, Types.NULL); // TODO: really should be Types.BOOLEAN, but that wasn't introduced until Java 1.4... hmmm what to do?        }        _ind++;    }    /**     * Set the next binding variable of the currently active prepared statement.     *     * @param field     *     * @throws SQLException     */    public void setValue(Object field) throws SQLException {        if (field != null) {            _ps.setObject(_ind, field, Types.JAVA_OBJECT);        } else {            _ps.setNull(_ind, Types.JAVA_OBJECT);        }        _ind++;    }    /**     * Set the next binding variable of the currently active prepared statement     *      * @param field     *      * @throws SQLException     */    public void setValue(Blob field) throws SQLException {        if (field != null) {            _ps.setBlob(_ind, field);        } else {            _ps.setNull(_ind, Types.BLOB);        }        _ind++;    }    /**     * Set the next binding variable of the currently active prepared statement     *      * @param field     *      * @throws SQLException     */    public void setValue(Clob field) throws SQLException {        if (field != null) {            _ps.setClob(_ind, field);        } else {            _ps.setNull(_ind, Types.CLOB);        }        _ind++;    }    /**     * Set the next binding variable of the currently active prepared statement     * to write the serialized data of 'field' to a BLOB.     *      * @param field     *      * @throws SQLException     */    public void setBinaryStream(Object field) throws SQLException {        if (field != null) {            try {                ByteArrayOutputStream os = new ByteArrayOutputStream();                ObjectOutputStream oos = new ObjectOutputStream(os);                oos.writeObject(field);                oos.close();                    byte[] buf = os.toByteArray();                os.close();                ByteArrayInputStream is = new ByteArrayInputStream(buf);                _ps.setBinaryStream(_ind, is, buf.length);                is.close();            } catch (IOException ex) {                throw new SQLException(ex.getMessage());            }        } else {            _ps.setNull(_ind, Types.BINARY);        }        _ind++;    }    protected void finalize() throws Throwable {        try {            this.close();        } catch (Exception e) {            Debug.logError(e, "Error closing the result, connection, etc in finalize SQLProcessor", module);        }        super.finalize();    }        protected void testConnection(Connection con) throws GenericEntityException {        if (SQLProcessor.ENABLE_TEST) {            if (SQLProcessor.CONNECTION_TEST_LIST.contains(con.toString())) {                throw new GenericEntityException("Connection the exact same as index " + SQLProcessor.CONNECTION_TEST_LIST.indexOf(con.toString()));                        }             SQLProcessor.CONNECTION_TEST_LIST.add(con.toString());            if (SQLProcessor.CONNECTION_TEST_LIST.size() > SQLProcessor.MAX_CONNECTIONS) {                SQLProcessor.CONNECTION_TEST_LIST.remove(0);                }        }    }    protected void setFetchSize(Statement stmt, int fetchSize) throws SQLException {        // do not set fetch size when using the cursor connection        if (_connection instanceof CursorConnection) return;        // check if the statement was called with a specific fetchsize, if not grab the default from the datasource        if (fetchSize < 0) {            DatasourceInfo ds = EntityConfigUtil.getDatasourceInfo(helperName);            if (ds != null) {                fetchSize = ds.resultFetchSize;            } else {                Debug.logWarning("DatasourceInfo is null, not setting fetch size!", module);            }        }        // otherwise only set if the size is > -1 (0 is sometimes used to note ALL rows)        if (fetchSize > -1) {            stmt.setFetchSize(fetchSize);        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -