CDbConnection

CDbHttpSession

Yii Framework v1.1.10 类参考

CDbConnection

system.db
继承 class CDbConnection » CApplicationComponent » CComponent
实现 IApplicationComponent
源自 1.0
版本 $Id: CDbConnection.php 3515 2011-12-28 12:29:24Z mdomba $
源码 framework/db/CDbConnection.php
CDbConnection代表一个到数据库的连接。

CDbConnection与CDbCommand, CDbDataReaderCDbTransaction一起提供了根据 DBMS 通用 API 来访问数据功能。 它们是PDO PHP 扩展的简化。

要建立一个连接,在指定connectionString, usernamepassword之后, 设置active为true,。

下面的例子显示了怎样创建一个CDbConnection实例和建立实际的连接: :
$connection=new CDbConnection($dsn,$username,$password);
$connection->active=true;


在DB连接建立之后,可以执行一个像下面这样的 SQL 语句:
$command=$connection->createCommand($sqlStatement);
$command->execute();   // a non-query SQL statement execution
// or execute an SQL query and fetch the result set
$reader=$command->query();

// each $row is an array representing a row of data
foreach($reader as $row) ...


也能执行一个准备好的 SQL 语句,并绑定参数到准备好的 SQL:
$command=$connection->createCommand($sqlStatement);
$command->bindParam($name1,$value1);
$command->bindParam($name2,$value2);
$command->execute();


要使用事务,像下面这样做:
$transaction=$connection->beginTransaction();
try
{
   $connection->createCommand($sql1)->execute();
   $connection->createCommand($sql2)->execute();
   //.... other SQL executions
   $transaction->commit();
}
catch(Exception $e)
{
   $transaction->rollBack();
}


CDbConnection也提供一套方法来支持设置和查询特定的DBMS属性, 例如 nullConversion

因为CDbConnection实现了IApplicationComponent接口,它能被用作一个应用程序组件, 并在应用程序中进行配置。 如下:
array(
    'components'=>array(
        'db'=>array(
            'class'=>'CDbConnection',
            'connectionString'=>'sqlite:path/to/dbfile',
        ),
    ),
)

公共属性

隐藏继承属性

属性类型描述定义在
active boolean 返回DB连接是否已经建立。 CDbConnection
attributes array 返回先前为数据库连接显式设置的属性。 CDbConnection
autoCommit boolean 返回是否创建或更新数据库记录将自动提交。 CDbConnection
autoConnect boolean 数据库是否应自动建立连接 此组件将被初始化。默认为true。注意,这个属性仅仅有效果当 CDbConnection对象被用作一个应用程序组件。 CDbConnection
behaviors array 这个应用组件附加的行为。 这此行为将在应用组件调用init时附加在应用组件上。 请参照CModel::behaviors如何指定此属性值。 CApplicationComponent
charset string 用于数据库连接charset字符串。这个属性仅仅用于 MySQL 和 PostgreSQL 数据库。默认为 null, 意味着使用此数据库指定的默认的charset。

注意如果你使用 GBK 或 BIG5 ,那么推荐更新到 PHP 5.
CDbConnection
clientVersion string 返回数据库驱动程序的版本信息。 CDbConnection
columnCase mixed 返回列名称的大小写情况 CDbConnection
commandBuilder CDbCommandBuilder 返回为当前DB连接的SQL命令生成器。 CDbConnection
connectionStatus string 返回连接的状态。 CDbConnection
connectionString string 数据源名称或 DSN,包含连接到数据库所需的信息。 CDbConnection
currentTransaction CDbTransaction 返回当前活动的事务。 CDbConnection
driverMap array PDO驱动程序和schema类名之间的映射。 使用路径别名指定一个 schema 类。 CDbConnection
driverName string 返回的数据库驱动程序的名称。 CDbConnection
emulatePrepare boolean 是否打开准备模拟。默认为 false, 意味着PDO将准备使用本地预备支持,如果可用。对于某些数据库 (如 MySQL), 这将需要设置为true 以至于 PDO 能模拟该预备支持 绕过buggy本地预备支持。注意,这个属性仅仅在PHP 5. CDbConnection
enableParamLogging boolean 是否记录的值绑定到一个准备的SQL语句。 默认为 false。在开发阶段,你应该考虑设置这个属性为true 以至于参数值能被绑定到SQL语句以记录用于高度目的。 你应该知道记录参数值代价是高昂的, 将很大程度影响你的应用程序的性能。 CDbConnection
enableProfiling boolean 正在执行的SQL语句是否启用分析。 默认为 false。这个主要 启用它主要用于开发阶段找出SQL执行的瓶颈。 CDbConnection
initSQLs array DB连接建立后执行的SQL语句列表。 CDbConnection
isInitialized boolean 检查应用组件是否已经初始化。 CApplicationComponent
lastInsertID string 返回最后一个插入的行的ID或序列值。 CDbConnection
nullConversion mixed 返回null与empty字符串如何转化的情况。 CDbConnection
password string 建立数据连接的密码。默认为空字符串。 CDbConnection
pdoClass string 自定义PDO封装类。 CDbConnection
pdoInstance PDO 返回PDO实例。 CDbConnection
persistent boolean 返回数据库连接是否持久的。 CDbConnection
prefetch boolean 返回数据库连接是否可执行数据预获取。 CDbConnection
queryCacheID string 缓存应用程序组件的ID,用于查询缓存。 默认为'cache',它指的是主缓存应用程序组件。 设置这个属性为false,如果你想禁用查询缓存。 CDbConnection
queryCachingCount integer 下次将被缓存的SQL语句的数目。 如果它是 0,即使查询缓存被启用,查询也不会被缓存。 注意每次执行一条SQL语句之后 (是否在DB服务器上执行或从查询缓存中获取), 这个属性将被减少1至0。 CDbConnection
queryCachingDependency CCacheDependency 当查询结果保存到缓存时,使用的依赖。 CDbConnection
queryCachingDuration integer 查询结果被保留在缓存中有效的秒数。 使用0或负数值指示不缓存查询结果 (默认 behavior). CDbConnection
schema CDbSchema 返回当前连接的数据库结构 CDbConnection
schemaCacheID string 缓存应用程序组件的ID,用于缓存表的元数据。 默认为'cache' 它指的是主缓存应用程序组件。 如果要禁用缓存表的元数据,此属性设置为false。 CDbConnection
schemaCachingDuration integer 数据表中元数据在缓存中保存的秒钟数。 使用0或负值指示不缓存schema。 如果大于0和正数,cache被启用,表的元数据将被缓存。 CDbConnection
schemaCachingExclude array 元数据不被缓存的列的列表。默认为空字符串。 CDbConnection
serverInfo string 返回DBMS服务器的信息。 CDbConnection
serverVersion string 返回DBMS服务器的版本信息。 CDbConnection
stats array 返回SQL执行的统计结果。 CDbConnection
tablePrefix string 表名称的默认前缀。默认为 null,意味着没有表前缀。 通过设置这个属性,任何标记像 '{{tableName}}' 在 CDbCommand::text 将 'prefixTableName'替换, 这里 'prefix' 指的是这个属性值。 CDbConnection
timeout integer 返回连接的超时设置。 CDbConnection
username string 建立数据连接的用户名。默认为空字符串。 CDbConnection

公共方法

隐藏继承方法

方法描述定义在
__call() 如果类中没有调的方法名,则调用这个方法。 CComponent
__construct() 构造函数。 CDbConnection
__get() 返回一个属性值、一个事件处理程序列表或一个行为名称。 CComponent
__isset() 检查一个属性是否为null。 CComponent
__set() 设置一个组件的属性值。 CComponent
__sleep() 序列化时关闭连接。 CDbConnection
__unset() 设置一个组件的属性为null。 CComponent
asa() 返回这个名字的行为对象。 CComponent
attachBehavior() 附加一个行为到组件。 CComponent
attachBehaviors() 附加一个行为列表到组件。 CComponent
attachEventHandler() 为事件附加一个事件处理程序。 CComponent
beginTransaction() 启动事务。 CDbConnection
cache() 设置关于查询缓存的参数。 CDbConnection
canGetProperty() 确定属性是否可读。 CComponent
canSetProperty() 确定属性是否可写。 CComponent
createCommand() 创建用于执行的命令。 CDbConnection
detachBehavior() 从组件中分离一个行为。 CComponent
detachBehaviors() 从组件中分离所有行为。 CComponent
detachEventHandler() 分离一个存在的事件处理程序。 CComponent
disableBehavior() 禁用一个附加行为。 CComponent
disableBehaviors() 禁用组件附加的所有行为。 CComponent
enableBehavior() 启用一个附加行为。 CComponent
enableBehaviors() 启用组件附加的所有行为。 CComponent
evaluateExpression() 计算一个PHP表达式,或根据组件上下文执行回调。 CComponent
getActive() 返回DB连接是否已经建立。 CDbConnection
getAttribute() 获取指定的数据库连接属性信息。 CDbConnection
getAttributes() 返回先前为数据库连接显式设置的属性。 CDbConnection
getAutoCommit() 返回是否创建或更新数据库记录将自动提交。 CDbConnection
getAvailableDrivers() 返回一个可用的PDO驱动程序的列表。 CDbConnection
getClientVersion() 返回数据库驱动程序的版本信息。 CDbConnection
getColumnCase() 返回列名称的大小写情况 CDbConnection
getCommandBuilder() 返回为当前DB连接的SQL命令生成器。 CDbConnection
getConnectionStatus() 返回连接的状态。 CDbConnection
getCurrentTransaction() 返回当前活动的事务。 CDbConnection
getDriverName() 返回的数据库驱动程序的名称。 CDbConnection
getEventHandlers() 返回一个事件的附加处理程序列表。 CComponent
getIsInitialized() 检查应用组件是否已经初始化。 CApplicationComponent
getLastInsertID() 返回最后一个插入的行的ID或序列值。 CDbConnection
getNullConversion() 返回null与empty字符串如何转化的情况。 CDbConnection
getPdoInstance() 返回PDO实例。 CDbConnection
getPdoType() 指定的PHP数据类型决定PDO数据类型。 CDbConnection
getPersistent() 返回数据库连接是否持久的。 CDbConnection
getPrefetch() 返回数据库连接是否可执行数据预获取。 CDbConnection
getSchema() 返回当前连接的数据库结构 CDbConnection
getServerInfo() 返回DBMS服务器的信息。 CDbConnection
getServerVersion() 返回DBMS服务器的版本信息。 CDbConnection
getStats() 返回SQL执行的统计结果。 CDbConnection
getTimeout() 返回连接的超时设置。 CDbConnection
hasEvent() 确定一个事件是否定义。 CComponent
hasEventHandler() 检查事件是否有附加的处理程序。 CComponent
hasProperty() 确定属性是否被定义。 CComponent
init() 初始化组件。 CDbConnection
quoteColumnName() 在一个查询中引用一个列名称。 CDbConnection
quoteTableName() 在一个查询中引用的表名。 CDbConnection
quoteValue() 在一个查询中引用一个字符串值。 CDbConnection
raiseEvent() 发起一个事件。 CComponent
setActive() 打开或关闭DB连接。 CDbConnection
setAttribute() 设置数据库连接上的一个属性。 CDbConnection
setAttributes() 设置一套数据库连接的属性。 CDbConnection
setAutoCommit() 设置是否创建或更新数据库记录将自动提交。 CDbConnection
setColumnCase() 设置列名称的大小写。 CDbConnection
setNullConversion() 设置null和empty 字符串如何转换。 CDbConnection
setPersistent() 设置此连接是否是持久连接。 CDbConnection

受保护方法

隐藏继承方法

方法描述定义在
close() 关闭当前连接的数据库连接。 CDbConnection
createPdoInstance() 创建一个 PDO 实例。 CDbConnection
initConnection() 初始化开放数据库连接。 CDbConnection
open() 打开数据库连接,如果它当前没有打开 CDbConnection

属性详细

active 属性
public boolean getActive()
public void setActive(boolean $value)

返回DB连接是否已经建立。

attributes 属性 (可用自 v1.1.7)
public array getAttributes()
public void setAttributes(array $values)

返回先前为数据库连接显式设置的属性。

参见

autoCommit 属性
public boolean getAutoCommit()
public void setAutoCommit(boolean $value)

返回是否创建或更新数据库记录将自动提交。 某些 DBMS (如 sqlite) 可能不支持这个特征。

autoConnect 属性
public boolean $autoConnect;

数据库是否应自动建立连接 此组件将被初始化。默认为true。注意,这个属性仅仅有效果当 CDbConnection对象被用作一个应用程序组件。

charset 属性
public string $charset;

用于数据库连接charset字符串。这个属性仅仅用于 MySQL 和 PostgreSQL 数据库。默认为 null, 意味着使用此数据库指定的默认的charset。

注意如果你使用 GBK 或 BIG5 ,那么推荐更新到 PHP 5.3.6+和通过DSN指定 charset 像下面这样 'mysql:dbname=mydatabase;host=127.0.0.1;charset=GBK;'。

clientVersion 属性 只读
public string getClientVersion()

返回数据库驱动程序的版本信息。

columnCase 属性
public mixed getColumnCase()
public void setColumnCase(mixed $value)

返回列名称的大小写情况

commandBuilder 属性 只读

返回为当前DB连接的SQL命令生成器。

connectionStatus 属性 只读
public string getConnectionStatus()

返回连接的状态。 一些 DBMS (如 sqlite) 可能不支持这个特征。

connectionString 属性
public string $connectionString;

数据源名称或 DSN,包含连接到数据库所需的信息。

currentTransaction 属性 只读

返回当前活动的事务。

driverMap 属性 (可用自 v1.1.6)
public array $driverMap;

PDO驱动程序和schema类名之间的映射。 使用路径别名指定一个 schema 类。

driverName 属性 只读
public string getDriverName()

返回的数据库驱动程序的名称。

emulatePrepare 属性
public boolean $emulatePrepare;

是否打开准备模拟。默认为 false, 意味着PDO将准备使用本地预备支持,如果可用。对于某些数据库 (如 MySQL), 这将需要设置为true 以至于 PDO 能模拟该预备支持 绕过buggy本地预备支持。注意,这个属性仅仅在PHP 5.1.3及以上有效。 默认值为 null,这将不改变PDO的 ATTR_EMULATE_PREPARES 值。

enableParamLogging 属性
public boolean $enableParamLogging;

是否记录的值绑定到一个准备的SQL语句。 默认为 false。在开发阶段,你应该考虑设置这个属性为true 以至于参数值能被绑定到SQL语句以记录用于高度目的。 你应该知道记录参数值代价是高昂的, 将很大程度影响你的应用程序的性能。

enableProfiling 属性
public boolean $enableProfiling;

正在执行的SQL语句是否启用分析。 默认为 false。这个主要 启用它主要用于开发阶段找出SQL执行的瓶颈。

initSQLs 属性 (可用自 v1.1.1)
public array $initSQLs;

DB连接建立后执行的SQL语句列表。

lastInsertID 属性 只读
public string getLastInsertID(string $sequenceName='')

返回最后一个插入的行的ID或序列值。

nullConversion 属性
public mixed getNullConversion()
public void setNullConversion(mixed $value)

返回null与empty字符串如何转化的情况。

password 属性
public string $password;

建立数据连接的密码。默认为空字符串。

pdoClass 属性 (可用自 v1.1.8)
public string $pdoClass;

自定义PDO封装类。

pdoInstance 属性 只读
public PDO getPdoInstance()

返回PDO实例。

persistent 属性
public boolean getPersistent()
public void setPersistent(boolean $value)

返回数据库连接是否持久的。 某些 DBMS (如 sqlite) 可能不支持这个特征。

prefetch 属性 只读
public boolean getPrefetch()

返回数据库连接是否可执行数据预获取。

queryCacheID 属性 (可用自 v1.1.7)
public string $queryCacheID;

缓存应用程序组件的ID,用于查询缓存。 默认为'cache',它指的是主缓存应用程序组件。 设置这个属性为false,如果你想禁用查询缓存。

queryCachingCount 属性 (可用自 v1.1.7)
public integer $queryCachingCount;

下次将被缓存的SQL语句的数目。 如果它是 0,即使查询缓存被启用,查询也不会被缓存。 注意每次执行一条SQL语句之后 (是否在DB服务器上执行或从查询缓存中获取), 这个属性将被减少1至0。

queryCachingDependency 属性 (可用自 v1.1.7)
public CCacheDependency $queryCachingDependency;

当查询结果保存到缓存时,使用的依赖。

queryCachingDuration 属性 (可用自 v1.1.7)
public integer $queryCachingDuration;

查询结果被保留在缓存中有效的秒数。 使用0或负数值指示不缓存查询结果 (默认 behavior).

为了启用查询缓存,这个属性必须被设置为正数。 并且 queryCacheID 必须指向一个有效的缓存组件 ID。

该方法cache() 提供一种方便的方法设置此属性 和 queryCachingDependency

schema 属性 只读

返回当前连接的数据库结构

schemaCacheID 属性
public string $schemaCacheID;

缓存应用程序组件的ID,用于缓存表的元数据。 默认为'cache' 它指的是主缓存应用程序组件。 如果要禁用缓存表的元数据,此属性设置为false。

schemaCachingDuration 属性
public integer $schemaCachingDuration;

数据表中元数据在缓存中保存的秒钟数。 使用0或负值指示不缓存schema。 如果大于0和正数,cache被启用,表的元数据将被缓存。

schemaCachingExclude 属性
public array $schemaCachingExclude;

元数据不被缓存的列的列表。默认为空字符串。

serverInfo 属性 只读
public string getServerInfo()

返回DBMS服务器的信息。

serverVersion 属性 只读
public string getServerVersion()

返回DBMS服务器的版本信息。

stats 属性 只读
public array getStats()

返回SQL执行的统计结果。 返回的结果包含执行SQL语句的数目和 所花费的总时间。 为了使用此方法,enableProfiling必须设置为 true。

tablePrefix 属性 (可用自 v1.1.0)
public string $tablePrefix;

表名称的默认前缀。默认为 null,意味着没有表前缀。 通过设置这个属性,任何标记像 '{{tableName}}' 在 CDbCommand::text 将 'prefixTableName'替换, 这里 'prefix' 指的是这个属性值。

timeout 属性 只读
public integer getTimeout()

返回连接的超时设置。

username 属性
public string $username;

建立数据连接的用户名。默认为空字符串。

方法详细

__construct() 方法
public void __construct(string $dsn='', string $username='', string $password='')
$dsn string 数据源名称,或 DSN,包含连接到数据库所需的信息。
$username string DSN 字符串的用户名。
$password string DSN 字符串的密码。
源码: framework/db/CDbConnection.php#271 (显示)
public function __construct($dsn='',$username='',$password='')
{
    
$this->connectionString=$dsn;
    
$this->username=$username;
    
$this->password=$password;
}

构造函数。 注意,当连接实例创建的时候,并不会连接数据库。 设置 active 属性为true, 来建立此连接。

__sleep() 方法
public array __sleep()
{return} array
源码: framework/db/CDbConnection.php#282 (显示)
public function __sleep()
{
    
$this->close();
    return 
array_keys(get_object_vars($this));
}

序列化时关闭连接。

beginTransaction() 方法
public CDbTransaction beginTransaction()
{return} CDbTransaction 返回事务启动
源码: framework/db/CDbConnection.php#490 (显示)
public function beginTransaction()
{
    
Yii::trace('Starting transaction','system.db.CDbConnection');
    
$this->setActive(true);
    
$this->_pdo->beginTransaction();
    return 
$this->_transaction=new CDbTransaction($this);
}

启动事务。

cache() 方法 (可用自 v1.1.7)
public CDbConnection cache(integer $duration, CCacheDependency $dependency=NULL, integer $queryCount=1)
$duration integer 查询结果保持在缓存中有效的秒数。 如果它是0,缓存将被禁用。
$dependency CCacheDependency 当查询结果保存到缓存时,使用的依赖。
$queryCount integer 在调用此方法后,需要缓存的SQL查询的数目。 默认为 1,意味着下一条SQL查询将被缓存。
{return} CDbConnection 返回连接实例本身。
源码: framework/db/CDbConnection.php#353 (显示)
public function cache($duration$dependency=null$queryCount=1)
{
    
$this->queryCachingDuration=$duration;
    
$this->queryCachingDependency=$dependency;
    
$this->queryCachingCount=$queryCount;
    return 
$this;
}

设置关于查询缓存的参数。 此方法可用于启用或禁用查询缓存。 通过设置$duration参数为0,查询缓存将被禁用。 要不然, 新的SQL语句执行的查询结果将被保存在缓存中, 并且在指定时间段内有效。 如果同样的查询再次执行,结果将直接从缓存中读取, 而不是执行实际的SQL语句。

close() 方法
protected void close()
源码: framework/db/CDbConnection.php#398 (显示)
protected function close()
{
    
Yii::trace('Closing DB connection','system.db.CDbConnection');
    
$this->_pdo=null;
    
$this->_active=false;
    
$this->_schema=null;
}

关闭当前连接的数据库连接。 如果连接已经关闭,它不执行任何操作。

createCommand() 方法
public CDbCommand createCommand(mixed $query=NULL)
$query mixed 要执行的DB查询。这可以是一个字符串,表示一个SQL语句, 或一个数组,它表示SQL语句的不同片段。请参阅 CDbCommand::__construct 有关更多详细信息有关如何将数组作为查询。如果这个参数没有给定, 你必须调用查询生成器的 CDbCommand 方法去建立数据库查询。
{return} CDbCommand 数据库命令
源码: framework/db/CDbConnection.php#466 (显示)
public function createCommand($query=null)
{
    
$this->setActive(true);
    return new 
CDbCommand($this,$query);
}

创建用于执行的命令。

createPdoInstance() 方法
protected PDO createPdoInstance()
{return} PDO 返回pdo实例
源码: framework/db/CDbConnection.php#412 (显示)
protected function createPdoInstance()
{
    
$pdoClass=$this->pdoClass;
    if((
$pos=strpos($this->connectionString,':'))!==false)
    {
        
$driver=strtolower(substr($this->connectionString,0,$pos));
        if(
$driver==='mssql' || $driver==='dblib' || $driver==='sqlsrv')
            
$pdoClass='CMssqlPdoAdapter';
    }
    return new 
$pdoClass($this->connectionString,$this->username,
                                
$this->password,$this->_attributes);
}

创建一个 PDO 实例。 pdo驱动程序中缺少某些功能时, 我们可以使用一个适配器类,以提供它们。

getActive() 方法
public boolean getActive()
{return} boolean 返回DB连接是否已经建立
源码: framework/db/CDbConnection.php#316 (显示)
public function getActive()
{
    return 
$this->_active;
}

返回DB连接是否已经建立。

getAttribute() 方法
public mixed getAttribute(integer $name)
$name integer 要查询的属性。
{return} mixed 相应的属性信息
源码: framework/db/CDbConnection.php#747 (显示)
public function getAttribute($name)
{
    
$this->setActive(true);
    return 
$this->_pdo->getAttribute($name);
}

获取指定的数据库连接属性信息。

getAttributes() 方法 (可用自 v1.1.7)
public array getAttributes()
{return} array 返回先前为数据库连接显式设置的属性(name=>value)。
源码: framework/db/CDbConnection.php#773 (显示)
public function getAttributes()
{
    return 
$this->_attributes;
}

返回先前为数据库连接显式设置的属性。

参见

getAutoCommit() 方法
public boolean getAutoCommit()
{return} boolean 返回是否创建或更新DB记录将自动提交。
源码: framework/db/CDbConnection.php#640 (显示)
public function getAutoCommit()
{
    return 
$this->getAttribute(PDO::ATTR_AUTOCOMMIT);
}

返回是否创建或更新数据库记录将自动提交。 某些 DBMS (如 sqlite) 可能不支持这个特征。

getAvailableDrivers() 方法
public static array getAvailableDrivers()
{return} array 返回一个可用的PDO驱动程序的列表
源码: framework/db/CDbConnection.php#293 (显示)
public static function getAvailableDrivers()
{
    return 
PDO::getAvailableDrivers();
}

返回一个可用的PDO驱动程序的列表。

getClientVersion() 方法
public string getClientVersion()
{return} string 返回数据库驱动程序的版本信息
源码: framework/db/CDbConnection.php#690 (显示)
public function getClientVersion()
{
    return 
$this->getAttribute(PDO::ATTR_CLIENT_VERSION);
}

返回数据库驱动程序的版本信息。

getColumnCase() 方法
public mixed getColumnCase()
{return} mixed 列的大小写情况
源码: framework/db/CDbConnection.php#600 (显示)
public function getColumnCase()
{
    return 
$this->getAttribute(PDO::ATTR_CASE);
}

返回列名称的大小写情况

getCommandBuilder() 方法
public CDbCommandBuilder getCommandBuilder()
{return} CDbCommandBuilder 返回此命令生成器
源码: framework/db/CDbConnection.php#521 (显示)
public function getCommandBuilder()
{
    return 
$this->getSchema()->getCommandBuilder();
}

返回为当前DB连接的SQL命令生成器。

getConnectionStatus() 方法
public string getConnectionStatus()
{return} string 返回连接的状态
源码: framework/db/CDbConnection.php#700 (显示)
public function getConnectionStatus()
{
    return 
$this->getAttribute(PDO::ATTR_CONNECTION_STATUS);
}

返回连接的状态。 一些 DBMS (如 sqlite) 可能不支持这个特征。

getCurrentTransaction() 方法
public CDbTransaction getCurrentTransaction()
{return} CDbTransaction 返回当前活动的事务。如果没有活动事务返回null。
源码: framework/db/CDbConnection.php#476 (显示)
public function getCurrentTransaction()
{
    if(
$this->_transaction!==null)
    {
        if(
$this->_transaction->getActive())
            return 
$this->_transaction;
    }
    return 
null;
}

返回当前活动的事务。

getDriverName() 方法
public string getDriverName()
{return} string 返回的DB驱动程序的名称
源码: framework/db/CDbConnection.php#679 (显示)
public function getDriverName()
{
    if((
$pos=strpos($this->connectionString':'))!==false)
        return 
strtolower(substr($this->connectionString0$pos));
    
// return $this->getAttribute(PDO::ATTR_DRIVER_NAME);
}

返回的数据库驱动程序的名称。

getLastInsertID() 方法
public string getLastInsertID(string $sequenceName='')
$sequenceName string 序列对象的名称 (某些DBMS要求)
{return} string 最后插入的行的 ID,或从序列对象中取回的最后的值。
源码: framework/db/CDbConnection.php#532 (显示)
public function getLastInsertID($sequenceName='')
{
    
$this->setActive(true);
    return 
$this->_pdo->lastInsertId($sequenceName);
}

返回最后一个插入的行的ID或序列值。

getNullConversion() 方法
public mixed getNullConversion()
{return} mixed 返回值说明null和空字符串是怎样转换的。
源码: framework/db/CDbConnection.php#620 (显示)
public function getNullConversion()
{
    return 
$this->getAttribute(PDO::ATTR_ORACLE_NULLS);
}

返回null与empty字符串如何转化的情况。

getPdoInstance() 方法
public PDO getPdoInstance()
{return} PDO 返回PDO实例,如果连接还没有建立返回null
源码: framework/db/CDbConnection.php#453 (显示)
public function getPdoInstance()
{
    return 
$this->_pdo;
}

返回PDO实例。

getPdoType() 方法
public integer getPdoType(string $type)
$type string PHP类型(通过调用gettype()获得)。
{return} integer 返回相应的PDO类型
源码: framework/db/CDbConnection.php#583 (显示)
public function getPdoType($type)
{
    static 
$map=array
    (
        
'boolean'=>PDO::PARAM_BOOL,
        
'integer'=>PDO::PARAM_INT,
        
'string'=>PDO::PARAM_STR,
        
'NULL'=>PDO::PARAM_NULL,
    );
    return isset(
$map[$type]) ? $map[$type] : PDO::PARAM_STR;
}

指定的PHP数据类型决定PDO数据类型。

getPersistent() 方法
public boolean getPersistent()
{return} boolean 返回连接是否是持久连接
源码: framework/db/CDbConnection.php#660 (显示)
public function getPersistent()
{
    return 
$this->getAttribute(PDO::ATTR_PERSISTENT);
}

返回数据库连接是否持久的。 某些 DBMS (如 sqlite) 可能不支持这个特征。

getPrefetch() 方法
public boolean getPrefetch()
{return} boolean 返回是否连接执行数据预读取
源码: framework/db/CDbConnection.php#709 (显示)
public function getPrefetch()
{
    return 
$this->getAttribute(PDO::ATTR_PREFETCH);
}

返回数据库连接是否可执行数据预获取。

getSchema() 方法
public CDbSchema getSchema()
{return} CDbSchema 当前连接的数据库结构
源码: framework/db/CDbConnection.php#502 (显示)
public function getSchema()
{
    if(
$this->_schema!==null)
        return 
$this->_schema;
    else
    {
        
$driver=$this->getDriverName();
        if(isset(
$this->driverMap[$driver]))
            return 
$this->_schema=Yii::createComponent($this->driverMap[$driver], $this);
        else
            throw new 
CDbException(Yii::t('yii','CDbConnection does not support reading schema for {driver} database.',
                array(
'{driver}'=>$driver)));
    }
}

返回当前连接的数据库结构

getServerInfo() 方法
public string getServerInfo()
{return} string 返回DBMS服务器的信息。
源码: framework/db/CDbConnection.php#718 (显示)
public function getServerInfo()
{
    return 
$this->getAttribute(PDO::ATTR_SERVER_INFO);
}

返回DBMS服务器的信息。

getServerVersion() 方法
public string getServerVersion()
{return} string 返回DBMS服务器的版本信息。
源码: framework/db/CDbConnection.php#727 (显示)
public function getServerVersion()
{
    return 
$this->getAttribute(PDO::ATTR_SERVER_VERSION);
}

返回DBMS服务器的版本信息。

getStats() 方法
public array getStats()
{return} array 返回的数组中第一个元素指示SQL语句执行的数目, 第二个元素指示SQL执行的总时间。
源码: framework/db/CDbConnection.php#798 (显示)
public function getStats()
{
    
$logger=Yii::getLogger();
    
$timings=$logger->getProfilingResults(null,'system.db.CDbCommand.query');
    
$count=count($timings);
    
$time=array_sum($timings);
    
$timings=$logger->getProfilingResults(null,'system.db.CDbCommand.execute');
    
$count+=count($timings);
    
$time+=array_sum($timings);
    return array(
$count,$time);
}

返回SQL执行的统计结果。 返回的结果包含执行SQL语句的数目和 所花费的总时间。 为了使用此方法,enableProfiling必须设置为 true。

getTimeout() 方法
public integer getTimeout()
{return} integer 返回连接的超时设置。
源码: framework/db/CDbConnection.php#736 (显示)
public function getTimeout()
{
    return 
$this->getAttribute(PDO::ATTR_TIMEOUT);
}

返回连接的超时设置。

init() 方法
public void init()
源码: framework/db/CDbConnection.php#305 (显示)
public function init()
{
    
parent::init();
    if(
$this->autoConnect)
        
$this->setActive(true);
}

初始化组件。 该方法对IApplicationComponent 来说是必须的, 并且当 CDbConnection 被用作一个应用程序组件时触发。 如果你重写此方法,请确保调用父类实现 以便可以将组件标记为已初始化。

initConnection() 方法
protected void initConnection(PDO $pdo)
$pdo PDO PDO实例
源码: framework/db/CDbConnection.php#431 (显示)
protected function initConnection($pdo)
{
    
$pdo->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
    if(
$this->emulatePrepare!==null && constant('PDO::ATTR_EMULATE_PREPARES'))
        
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,$this->emulatePrepare);
    if(
$this->charset!==null)
    {
        
$driver=strtolower($pdo->getAttribute(PDO::ATTR_DRIVER_NAME));
        if(
in_array($driver,array('pgsql','mysql','mysqli')))
            
$pdo->exec('SET NAMES '.$pdo->quote($this->charset));
    }
    if(
$this->initSQLs!==null)
    {
        foreach(
$this->initSQLs as $sql)
            
$pdo->exec($sql);
    }
}

初始化开放数据库连接。 在数据库连接建立后,调用此方法对。 默认的实现是设置MySQL和PostgreSQL数据库连接的charset。

open() 方法
protected void open()
源码: framework/db/CDbConnection.php#365 (显示)
protected function open()
{
    if(
$this->_pdo===null)
    {
        if(empty(
$this->connectionString))
            throw new 
CDbException(Yii::t('yii','CDbConnection.connectionString cannot be empty.'));
        try
        {
            
Yii::trace('Opening DB connection','system.db.CDbConnection');
            
$this->_pdo=$this->createPdoInstance();
            
$this->initConnection($this->_pdo);
            
$this->_active=true;
        }
        catch(
PDOException $e)
        {
            if(
YII_DEBUG)
            {
                throw new 
CDbException(Yii::t('yii','CDbConnection failed to open the DB connection: {error}',
                    array(
'{error}'=>$e->getMessage())),(int)$e->getCode(),$e->errorInfo);
            }
            else
            {
                
Yii::log($e->getMessage(),CLogger::LEVEL_ERROR,'exception.CDbException');
                throw new 
CDbException(Yii::t('yii','CDbConnection failed to open the DB connection.'),(int)$e->getCode(),$e->errorInfo);
            }
        }
    }
}

打开数据库连接,如果它当前没有打开

quoteColumnName() 方法
public string quoteColumnName(string $name)
$name string 列名
{return} string 正确引用的列名称
源码: framework/db/CDbConnection.php#573 (显示)
public function quoteColumnName($name)
{
    return 
$this->getSchema()->quoteColumnName($name);
}

在一个查询中引用一个列名称。 如果该列名包含前缀,前缀也被恰当的引用。

quoteTableName() 方法
public string quoteTableName(string $name)
$name string 表名
{return} string 正确引用的表名
源码: framework/db/CDbConnection.php#562 (显示)
public function quoteTableName($name)
{
    return 
$this->getSchema()->quoteTableName($name);
}

在一个查询中引用的表名。 如果此表名包含schema 前缀,前缀也能被恰当的引用。

quoteValue() 方法
public string quoteValue(string $str)
$str string 被引用的字符串
{return} string 正确引用的字符串
源码: framework/db/CDbConnection.php#544 (显示)
public function quoteValue($str)
{
    if(
is_int($str) || is_float($str))
        return 
$str;

    
$this->setActive(true);
    if((
$value=$this->_pdo->quote($str))!==false)
        return 
$value;
    else  
// the driver doesn't support quote (e.g. oci)
        
return "'" addcslashes(str_replace("'""''"$str), "\000\n\r\\\032") . "'";
}

在一个查询中引用一个字符串值。

setActive() 方法
public void setActive(boolean $value)
$value boolean 说明数据库连接是开启还是关闭。
源码: framework/db/CDbConnection.php#326 (显示)
public function setActive($value)
{
    if(
$value!=$this->_active)
    {
        if(
$value)
            
$this->open();
        else
            
$this->close();
    }
}

打开或关闭DB连接。

setAttribute() 方法
public void setAttribute(integer $name, mixed $value)
$name integer 要设置的属性
$value mixed 属性值
源码: framework/db/CDbConnection.php#759 (显示)
public function setAttribute($name,$value)
{
    if(
$this->_pdo instanceof PDO)
        
$this->_pdo->setAttribute($name,$value);
    else
        
$this->_attributes[$name]=$value;
}

设置数据库连接上的一个属性。

setAttributes() 方法 (可用自 v1.1.7)
public void setAttributes(array $values)
$values array 要被设置的属性(name=>value)。
源码: framework/db/CDbConnection.php#784 (显示)
public function setAttributes($values)
{
    foreach(
$values as $name=>$value)
        
$this->_attributes[$name]=$value;
}

设置一套数据库连接的属性。

参见

setAutoCommit() 方法
public void setAutoCommit(boolean $value)
$value boolean 返回是否创建或更新DB记录将自动提交。
源码: framework/db/CDbConnection.php#650 (显示)
public function setAutoCommit($value)
{
    
$this->setAttribute(PDO::ATTR_AUTOCOMMIT,$value);
}

设置是否创建或更新数据库记录将自动提交。 某些 DBMS (如 sqlite) 可能不支持这个特征。

setColumnCase() 方法
public void setColumnCase(mixed $value)
$value mixed 列名称的大小写
源码: framework/db/CDbConnection.php#610 (显示)
public function setColumnCase($value)
{
    
$this->setAttribute(PDO::ATTR_CASE,$value);
}

设置列名称的大小写。

setNullConversion() 方法
public void setNullConversion(mixed $value)
$value mixed null和empty 字符串如何转换。
源码: framework/db/CDbConnection.php#630 (显示)
public function setNullConversion($value)
{
    
$this->setAttribute(PDO::ATTR_ORACLE_NULLS,$value);
}

设置null和empty 字符串如何转换。

setPersistent() 方法
public void setPersistent(boolean $value)
$value boolean 此连接是否是持久连接
源码: framework/db/CDbConnection.php#670 (显示)
public function setPersistent($value)
{
    return 
$this->setAttribute(PDO::ATTR_PERSISTENT,$value);
}

设置此连接是否是持久连接。 某些 DBMS (如 sqlite) 可能不支持这个特征。

Copyright © 2008-2011 by Yii Software LLC
All Rights Reserved.