From 41c5b7e566c0019d0b8e0c9399b780a95ad44113 Mon Sep 17 00:00:00 2001 From: wei <> Date: Wed, 22 Feb 2006 04:01:28 +0000 Subject: Adding DataAccess modules. --- framework/DataAccess/TDatabaseProvider.php | 258 +++++++++++++++++++++++++++++ 1 file changed, 258 insertions(+) create mode 100644 framework/DataAccess/TDatabaseProvider.php (limited to 'framework/DataAccess/TDatabaseProvider.php') diff --git a/framework/DataAccess/TDatabaseProvider.php b/framework/DataAccess/TDatabaseProvider.php new file mode 100644 index 00000000..8f676345 --- /dev/null +++ b/framework/DataAccess/TDatabaseProvider.php @@ -0,0 +1,258 @@ + + * @version $Revision: $ $Date: $ + * @package System.DataAccess + * @since 3.0 + */ +abstract class TDatabaseProvider extends TModule +{ + private $_connectionString = ''; + private $_database=''; + private $_driver=''; + private $_host=''; + private $_username=''; + private $_password=''; + private $_persistent=true; + + /** + * @param string used to open the connection + */ + public function setConnectionString($value) + { + $this->_connectionString = $value; + } + + /** + * @return string used to open the connection + */ + public function getConnectionString() + { + return $this->_connectionString; + } + + /** + * @return string the DB driver (mysql, sqlite, etc.) + */ + public function getDriver() + { + return $this->_driver; + } + + /** + * Sets the DB driver (mysql, sqlite, etc.) + * @param string the DB driver + */ + public function setDriver($value) + { + $this->_driver=$value; + } + + /** + * @return string the DB host name/IP (and port number) in the format "host[:port]" + */ + public function getHost() + { + return $this->_host; + } + + /** + * Sets the DB host name/IP (and port number) in the format "host[:port]" + * @param string the DB host + */ + public function setHost($value) + { + $this->_host=$value; + } + + /** + * @return string the DB username + */ + public function getUsername() + { + return $this->_username; + } + + /** + * Sets the DB username + * @param string the DB username + */ + public function setUsername($value) + { + $this->_username=$value; + } + + /** + * @return string the DB password + */ + public function getPassword() + { + return $this->_password; + } + + /** + * Sets the DB password + * @param string the DB password + */ + public function setPassword($value) + { + $this->_password=$value; + } + + /** + * @return string the database name + */ + public function getDatabase() + { + return $this->_database; + } + + /** + * Sets the database name + * @param string the database name + */ + public function setDatabase($value) + { + $this->_database=$value; + } + + /** + * @return boolean whether the DB connection is persistent + */ + public function getUsePersistentConnection() + { + return $this->_persistent; + } + + /** + * Sets whether the DB connection should be persistent + * @param boolean whether the DB connection should be persistent + */ + public function setUsePersistentConnection($value) + { + $this->_persistent=$value; + } + + /** + * @return TDbConnection a database connection + */ + public abstract function getConnection(); +} + +/** + * Performs the connection to the database using a TDatabaseProvider, + * executes SQL statements. + * + * @author Wei Zhuo + * @version $Revision: $ $Date: $ + * @package System.DataAccess + * @since 3.0 + */ +abstract class TDbConnection extends TComponent implements IDbConnection +{ + private $_provider; + + public function __construct($provider) + { + if($provider instanceof TDatabaseProvider) + $this->setProvider($provider); + } + + public function setProvider($provider) + { + $this->_provider = $provider; + } + + public function getProvider() + { + return $this->_provider; + } +} + +/** + * A connection (session) with a specific database. SQL statements are executed + * and results are returned within the context of a connection. + * + * @author Wei Zhuo + * @version $Revision: $ $Date: $ + * @package System.DataAccess + * @since 3.0 + */ +interface IDbConnection +{ + /** + * Closes the connection to the database. + */ + public function close(); + + /** + * @return boolean retrieves whether this connection has been closed. + */ + public function getIsClosed(); + + /** + * Opens a database connection with settings provided in the ConnectionString. + */ + public function open(); + + /** + * @return string creates a prepared statement for sending parameterized + * SQL statements to the database. + */ + public function prepare($statement); + + /** + * Executes the SQL statement which may be any kind of SQL statement, + * including prepared statements. + * @param string sql query statement + * @param array subsititution parameters + * @return mixed result set + */ + public function execute($sql, $parameters=array()); + + /** + * Start a transaction on this connection. + */ + public function beginTransaction(); + + /** + * Finish and cleanup transactions. + */ + public function completeTranaction(); + + /** + * Fail the current transaction. + */ + public function failTransaction(); + + /** + * @return boolean true if transaction has failed. + */ + public function getHasTransactionFailed(); + + /** + * Makes all changes made since the previous commit/rollback permanent and + * releases any database locks. + */ + public function commit(); + + /** + * Undoes all changes made in the current transaction and releases any + * database locks + */ + public function rollback(); + + /** + * @param string quote a string to be sent to the database. + * @param boolean if true it ensure that the variable is not quoted twice, + * once by quote and once by the magic_quotes_gpc. + * @return string database specified quoted string + */ + public function quote($string, $magic_quotes=false); + +} + +?> \ No newline at end of file -- cgit v1.2.3