包 | 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 |