CDbConnection


system.db
继承 class CDbConnection » CApplicationComponent » CComponent
实现 IApplicationComponent
源自 1.0
版本 $Id: CDbConnection.php 3515 2011-12-28 12:29:24Z mdomba $
源码
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