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.         $this->lastQuery = $queryString;
  101.         $result $this->_doQuery($queryString);
  102.         return $result;
  103.     }
  104.  
  105.     public function lastInsertId($fromSequence=''){// on n'a pas besoin de l'argument pour mysql
  106.         return sqlite_last_insert_rowid($this->_connection);
  107.     }
  108.  
  109.     /**
  110.     * tell mysql to be autocommit or not
  111.     * @param boolean $state the state of the autocommit value
  112.     * @return void 
  113.     */
  114.     protected function _autoCommitNotify ($state){
  115.         $this->query ('SET AUTOCOMMIT='.$state '1' '0');
  116.     }
  117.  
  118.     /**
  119.     * @return string the text with non ascii char and quotes escaped
  120.     */
  121.     protected function _quote($text$binary{
  122.         return sqlite_escape_string($text);
  123.     }
  124.  
  125.  
  126.     /**
  127.      *
  128.      * @param integer $id the attribut id
  129.      * @return string the attribute value
  130.      * @see PDO::getAttribute()
  131.      */
  132.     public function getAttribute($id{
  133.         switch($id{
  134.             case self::ATTR_CLIENT_VERSION:
  135.             case self::ATTR_SERVER_VERSION:
  136.                 return sqlite_libversion();
  137.         }
  138.         return "";
  139.     }
  140.  
  141.     /**
  142.      * 
  143.      * @param integer $id the attribut id
  144.      * @param string $value the attribute value
  145.      * @see PDO::setAttribute()
  146.      */
  147.     public function setAttribute($id$value{
  148.     }
  149.  
  150. }

Documentation generated on Wed, 24 Sep 2014 22:04:31 +0200 by phpDocumentor 1.4.3