Source for file mssql.dbtools.php

Documentation is available at mssql.dbtools.php

  1. <?php
  2. /**
  3.  * @package    jelix
  4.  * @subpackage db_driver
  5.  * @author     Yann Lecommandoux
  6.  * @contributor Julien
  7.  * @copyright  2008 Yann Lecommandoux, 2010 Julien
  8.  * @link      http://jelix.org
  9.  * @licence  http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public Licence, see LICENCE file
  10.  */
  11.  
  12. /**
  13.  * @experimental
  14.  */
  15. class mssqlDbTools extends jDbTools {
  16.  
  17.     protected $dbmsStyle = array('/^\s*(#|\-\- )/''/;\s*$/');
  18.  
  19.     /**
  20.      *     List of tables
  21.      * @return   array    $tab[] = $nomDeTable
  22.      */
  23.     function getTableList (){
  24.         $results array ();
  25.         $sql "SELECT TABLE_NAME FROM " .$this->_conn->profile['database']".INFORMATION_SCHEMA.TABLES
  26.                 WHERE TABLE_NAME NOT LIKE ('sys%') AND TABLE_NAME NOT LIKE ('dt%')";
  27.         $rs $this->_connector->query ($sql);
  28.         while ($line $rs->fetch ()){
  29.             $results[$line->TABLE_NAME;
  30.         }
  31.         return $results;
  32.     }
  33.  
  34.     /**
  35.     * retrieve the list of fields of a table
  36.     * @param string $tableName the name of the table
  37.     * @param string $sequence  the sequence used to auto increment the primary key (not supported here)
  38.     * @return   array    keys are field names and values are jDbFieldProperties objects
  39.     */
  40.     public function getFieldList ($tableName$sequence=''{
  41.  
  42.         $results array ();
  43.  
  44.         $pkeys array();
  45.         // get primary keys informations
  46.         $rs $this->_conn->query('EXEC sp_pkeys ' $tableName);
  47.         while ($line $rs->fetch()){
  48.             $pkeys[$line->COLUMN_NAME;
  49.         }
  50.         // get table informations
  51.         unset($line);
  52.         $rs $this->_conn->query ('EXEC sp_columns ' $tableName);
  53.         while ($line $rs->fetch ()){
  54.             $field new jDbFieldProperties();
  55.             $field->name $line->COLUMN_NAME;
  56.             $field->type $line->TYPE_NAME;
  57.             $field->length $line->LENGTH;
  58.             if ($field->type == 'int identity'){
  59.                 $field->type 'int';
  60.                 $field->autoIncrement true;
  61.             }
  62.             if ($field->type == 'bit'){
  63.                 $field->type 'int';
  64.             }
  65.             if ($line->IS_NULLABLE == 'No'){
  66.                 $field->notNull false;
  67.             }
  68.             $field->hasDefault false;
  69.             $field->default '';
  70.             if(in_array($field->name$pkeys)){
  71.                 $field->primary true;
  72.             }
  73.             $results[$line->COLUMN_NAME$field;
  74.         }
  75.         return $results;
  76.     }
  77. }

Documentation generated on Mon, 26 Oct 2015 21:57:30 +0100 by phpDocumentor 1.4.3