Files
portal-legacy/lib/symfony/vendor/creole/Connection.php
Chris Sewell cf140a2e97 initial commit
2012-11-28 03:55:08 -05:00

220 lines
7.0 KiB
PHP
Executable File

<?php
/*
* $Id: Connection.php,v 1.29 2005/10/17 19:03:50 dlawson_mi Exp $
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information please see
* <http://creole.phpdb.org>.
*/
include_once 'creole/ResultSet.php'; // we need this for the fetchmode ResultSet flags (constants) that are passed to executeQuery()
/**
* Connection is an abstract base class for DB dialect implementations, and must be
* inherited by all such.
*
* Developer notes:
* (1) Make sure that your Connection class can be serialized. See the ConnectionCommon __sleep() and __wakeup() implimentation.
*
* @author Hans Lellelid <hans@xmpl.org>
* @version $Revision: 1.29 $
* @package creole
*/
interface Connection {
// Constants that define transaction isolation levels.
// [We don't have any code using these yet, so there's no need
// to initialize these values at this point.]
// const TRANSACTION_NONE = 0;
// const TRANSACTION_READ_UNCOMMITTED = 1;
// const TRANSACTION_READ_COMMITTED = 2;
// const TRANSACTION_REPEATABLE_READ = 3;
// const TRANSACTION_SERIALIZABLE = 4;
/**
* Connect to a database and log in as the specified user.
*
* @param array $dsn The PEAR-style data source hash.
* @param int $flags (optional) Flags for connection (e.g. Creole::PERSISTENT). These flags
* may apply to any of the driver classes.
*/
public function connect($dsn, $flags = false);
/**
* Get the PHP native resource for the database connection/link.
* @return resource
*/
public function getResource();
/**
* Get any flags that were passed to connection.
* @return int
*/
public function getFlags();
/**
* Get the DSN array used by connect() method to connect to database.
* @see connect()
* @return array
*/
public function getDSN();
/**
* Gets a DatabaseInfo class for the current database.
*
* This is not modeled on the JDBC MetaData class, but provides a possibly more
* useful metadata system. All the same, there may eventually be a getMetaData()
* which returns a class that behaves like JDBC's DatabaseMetaData.
*
* @return DatabaseInfo
*/
public function getDatabaseInfo();
/**
* Loads and returns an IdGenerator object for current RDBMS.
* @return IdGenerator
*/
public function getIdGenerator();
/**
* Prepares a query for multiple execution with execute().
*
* With some database backends, this is emulated.
* prepare() requires a generic query as string like
* "INSERT INTO numbers VALUES(?,?,?)". The ? are placeholders.
*
* IMPORTANT: All occurrences of the placeholder (?) will be assumed
* to be a parameter. Therefore be sure not to have ? anywhere else in
* the query.
*
* So, ... DO NOT MIX WILDCARDS WITH ALREADY-PREPARED QUERIES
*
* INCORRECT:
* SELECT * FROM mytable WHERE id = ? AND title = 'Where are you?' and body LIKE ?
*
* CORRECT:
* SELECT * FROM mytable WHERE id = ? AND title = ? and body LIKE ?
*
* @param string $sql The query to prepare.
* @return PreparedStatement
* @throws SQLException
* @see PreparedStatement::execute()
*/
public function prepareStatement($sql);
/**
* Creates a new empty Statement.
* @return Statement
*/
public function createStatement();
/**
* If RDBMS supports native LIMIT/OFFSET then query SQL is modified
* so that no emulation is performed in ResultSet.
*
* @param string &$sql The query that will be modified.
* @param int $offset
* @param int $limit
* @return void
* @throws SQLException - if unable to modify query for any reason.
*/
public function applyLimit(&$sql, $offset, $limit);
/**
* Executes the SQL query in this PreparedStatement object and returns the resultset.
*
* @param string $sql The SQL statement.
* @param int $fetchmode
* @return object ResultSet
* @throws SQLException if a database access error occurs.
*/
public function executeQuery($sql, $fetchmode = null);
/**
* Executes the SQL INSERT, UPDATE, or DELETE statement.
*
* @param string $sql This method may optionally be called with the SQL statement.
* @return int Number of affected rows (or 0 for drivers that return nothing).
* @throws SQLException if a database access error occurs.
*/
public function executeUpdate($sql);
/**
* Creates a CallableStatement object for calling database stored procedures.
*
* @param string $sql
* @return CallableStatement
*/
public function prepareCall($sql);
/**
* Free the db resources.
* @return void
*/
public function close();
/**
* Returns false if connection is closed.
* @return boolean
*/
public function isConnected();
/**
* Get auto-commit status.
*
* @return boolean
*/
public function getAutoCommit();
/**
* Enable/disable automatic commits.
*
* Pushes SQLWarning onto $warnings stack if the autocommit value is being changed mid-transaction. This function
* is overridden by driver classes so that they can perform the necessary begin/end transaction SQL.
*
* If auto-commit is being set to TRUE, then the current transaction will be committed immediately.
*
* @param boolean $bit New value for auto commit.
* @return void
*/
public function setAutoCommit($bit);
/**
* Begins a transaction (if supported).
*
*/
public function begin();
/**
* Commits statements in a transaction.
*
*/
public function commit();
/**
* Rollback changes in a transaction.
*
*/
public function rollback();
/**
* Gets the number of rows affected by the data manipulation
* query.
*
* @return int Number of rows affected by the last query.
*/
public function getUpdateCount();
}