| 包 | system.db |
|---|---|
| 继承 | class CDbConnection » CApplicationComponent » CComponent |
| 实现 | IApplicationComponent |
| 源自 | 1.0 |
| 版本 | $Id: CDbConnection.php 3515 2011-12-28 12:29:24Z mDOMba $ |
| 源码 |
CDbConnection代表一个到数据库的连接。
CDbConnection与CDbCommand, CDbDataReader 和 CDbTransaction一起提供了根据 DBMS 通用 API 来访问数据功能。 它们是PDO PHP 扩展的简化。
要建立一个连接,在指定connectionString, username 和 password之后, 设置active为true,。
下面的例子显示了怎样创建一个CDbConnection实例和建立实际的连接: :
在DB连接建立之后,可以执行一个像下面这样的 SQL 语句:
也能执行一个准备好的 SQL 语句,并绑定参数到准备好的 SQL:
要使用事务,像下面这样做:
CDbConnection也提供一套方法来支持设置和查询特定的DBMS属性, 例如 nullConversion。
因为CDbConnection实现了IApplicationComponent接口,它能被用作一个应用程序组件, 并在应用程序中进行配置。 如下:
CDbConnection与CDbCommand, CDbDataReader 和 CDbTransaction一起提供了根据 DBMS 通用 API 来访问数据功能。 它们是PDO PHP 扩展的简化。
要建立一个连接,在指定connectionString, username 和 password之后, 设置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 |