Source for file sqlite.dbconnection.php

Documentation is available at sqlite.dbconnection.php

  1. <?php
  2. /**
  3. @package    jelix
  4. @subpackage db_driver
  5. @author     Loic Mathaud
  6. @contributor Laurent Jouanneau
  7. @copyright  2006 Loic Mathaud, 2007-2010 Laurent Jouanneau
  8. @link      http://www.jelix.org
  9. @licence  http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public Licence, see LICENCE file
  10. */
  11. require_once(dirname(__FILE__).'/sqlite.dbresultset.php');
  12.  
  13. /**
  14.  *
  15.  * @package    jelix
  16.  * @subpackage db_driver
  17.  */
  18. class sqliteDbConnection extends jDbConnection {
  19.  
  20.     function __construct($profile){
  21.         if(!function_exists('sqlite_open')){
  22.             throw new jException('jelix~db.error.nofunction','sqlite');
  23.         }
  24.         parent::__construct($profile);
  25.     }
  26.  
  27.     /**
  28.     * begin a transaction
  29.     */
  30.     public function beginTransaction (){
  31.         $this->_doExec ('BEGIN');
  32.     }
  33.  
  34.     /**
  35.     * Commit since the last begin
  36.     */
  37.     public function commit (){
  38.         $this->_doExec ('COMMIT');
  39.     }
  40.  
  41.     /**
  42.     * Rollback since the last BEGIN
  43.     */
  44.     public function rollback (){
  45.         $this->_doExec ('ROLLBACK');
  46.     }
  47.  
  48.     /**
  49.     *
  50.     */
  51.     public function prepare ($query){
  52.         throw new jException('jelix~db.error.feature.unsupported'array('sqlite','prepare'));
  53.     }
  54.  
  55.     public function errorInfo(){
  56.         return array(sqlite_last_error($this->_connection)sqlite_error_string($this->_connection));
  57.     }
  58.  
  59.     public function errorCode(){
  60.         return sqlite_last_error($this->_connection);
  61.     }
  62.  
  63.     protected function _connect (){
  64.         $funcconnect(isset($this->profile['persistent']&& $this->profile['persistent']'sqlite_popen':'sqlite_open');
  65.         $db $this->profile['database'];
  66.         if (preg_match('/^(app|lib|var)\:/'$db))
  67.             $path str_replace(array('app:','lib:','var:')array(jApp::appPath()LIB_PATHjApp::varPath())$db);
  68.         else
  69.             $path jApp::varPath('db/sqlite/'.$db);
  70.  
  71.         if ($cnx @$funcconnect($path)) {
  72.             return $cnx;
  73.         else {
  74.             throw new jException('jelix~db.error.connection',$db);
  75.         }
  76.     }
  77.  
  78.     protected function _disconnect (){
  79.         return sqlite_close($this->_connection);
  80.     }
  81.  
  82.     protected function _doQuery($query){
  83.         if ($qI sqlite_query($query$this->_connection)){
  84.             return new sqliteDbResultSet($qI);
  85.         else {
  86.             throw new jException('jelix~db.error.query.bad'sqlite_error_string($this->_connection).'('.$query.')');
  87.         }
  88.     }
  89.  
  90.     protected function _doExec($query){
  91.         if ($qI sqlite_query($query$this->_connection)){
  92.             return sqlite_changes($this->_connection);
  93.         else {
  94.             throw new jException('jelix~db.error.query.bad'sqlite_error_string($this->_connection).'('.$query.')');
  95.         }
  96.     }
  97.  
  98.     protected function _doLimitQuery ($queryString$offset$number){
  99.         $queryString.= ' LIMIT '.$offset.','.$number;
  100.         $result $this->_doQuery($queryString);
  101.         return $result;
  102.     }
  103.  
  104.     public function lastInsertId($fromSequence=''){// on n'a pas besoin de l'argument pour mysql
  105.         return sqlite_last_insert_rowid($this->_connection);
  106.     }
  107.  
  108.     /**
  109.     * tell mysql to be autocommit or not
  110.     * @param boolean $state the state of the autocommit value
  111.     * @return void 
  112.     */
  113.     protected function _autoCommitNotify ($state){
  114.         $this->query ('SET AUTOCOMMIT='.$state '1' '0');
  115.     }
  116.  
  117.     /**
  118.     * @return string the text with non ascii char and quotes escaped
  119.     */
  120.     protected function _quote($text$binary{
  121.         return sqlite_escape_string($text);
  122.     }
  123.  
  124.  
  125.     /**
  126.      *
  127.      * @param integer $id the attribut id
  128.      * @return string the attribute value
  129.      * @see PDO::getAttribute()
  130.      */
  131.     public function getAttribute($id{
  132.         switch($id{
  133.             case self::ATTR_CLIENT_VERSION:
  134.             case self::ATTR_SERVER_VERSION:
  135.                 return sqlite_libversion();
  136.         }
  137.         return "";
  138.     }
  139.  
  140.     /**
  141.      * 
  142.      * @param integer $id the attribut id
  143.      * @param string $value the attribute value
  144.      * @see PDO::setAttribute()
  145.      */
  146.     public function setAttribute($id$value{
  147.     }
  148.  
  149. }

Documentation generated on Mon, 19 Sep 2011 14:14:15 +0200 by phpDocumentor 1.4.3