CDbConnection

优质
小牛编辑
129浏览
2023-12-01
所有包 | 属性 | 方法
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, 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',      ),  ),
)

公共属性

隐藏继承属性

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

注意如果你使用 GBK 或 BIG5 ,那么推荐更新到 PHP 5.
CDbConnection
clientVersionstring返回数据库驱动程序的版本信息。CDbConnection
columnCasemixed返回列名称的大小写情况CDbConnection
commandBuilderCDbCommandBuilder返回为当前DB连接的SQL命令生成器。CDbConnection
connectionStatusstring返回连接的状态。CDbConnection
connectionStringstring数据源名称或 DSN,包含连接到数据库所需的信息。CDbConnection
currentTransactionCDbTransaction返回当前活动的事务。CDbConnection
driverMaparrayPDO驱动程序和schema类名之间的映射。 使用路径别名指定一个 schema 类。CDbConnection
driverNamestring返回的数据库驱动程序的名称。CDbConnection
emulatePrepareboolean是否打开准备模拟。默认为 false, 意味着PDO将准备使用本地预备支持,如果可用。对于某些数据库 (如 MySQL), 这将需要设置为true 以至于 PDO 能模拟该预备支持 绕过buggy本地预备支持。注意,这个属性仅仅在PHP 5.CDbConnection
enableParamLoggingboolean是否记录的值绑定到一个准备的SQL语句。 默认为 false。在开发阶段,你应该考虑设置这个属性为true 以至于参数值能被绑定到SQL语句以记录用于高度目的。 你应该知道记录参数值代价是高昂的, 将很大程度影响你的应用程序的性能。CDbConnection
enableProfilingboolean正在执行的SQL语句是否启用分析。 默认为 false。这个主要 启用它主要用于开发阶段找出SQL执行的瓶颈。CDbConnection
initSQLsarrayDB连接建立后执行的SQL语句列表。CDbConnection
isInitializedboolean检查应用组件是否已经初始化。CApplicationComponent
lastInsertIDstring返回最后一个插入的行的ID或序列值。CDbConnection
nullConversionmixed返回null与empty字符串如何转化的情况。CDbConnection
passwordstring建立数据连接的密码。默认为空字符串。CDbConnection
pdoClassstring自定义PDO封装类。CDbConnection
pdoInstancePDO返回PDO实例。CDbConnection
persistentboolean返回数据库连接是否持久的。CDbConnection
prefetchboolean返回数据库连接是否可执行数据预获取。CDbConnection
queryCacheIDstring缓存应用程序组件的ID,用于查询缓存。 默认为'cache',它指的是主缓存应用程序组件。 设置这个属性为false,如果你想禁用查询缓存。CDbConnection
queryCachingCountinteger下次将被缓存的SQL语句的数目。 如果它是 0,即使查询缓存被启用,查询也不会被缓存。 注意每次执行一条SQL语句之后 (是否在DB服务器上执行或从查询缓存中获取), 这个属性将被减少1至0。CDbConnection
queryCachingDependencyCCacheDependency当查询结果保存到缓存时,使用的依赖。CDbConnection
queryCachingDurationinteger查询结果被保留在缓存中有效的秒数。 使用0或负数值指示不缓存查询结果 (默认 behavior).CDbConnection
schemaCDbSchema返回当前连接的数据库结构CDbConnection
schemaCacheIDstring缓存应用程序组件的ID,用于缓存表的元数据。 默认为'cache' 它指的是主缓存应用程序组件。 如果要禁用缓存表的元数据,此属性设置为false。CDbConnection
schemaCachingDurationinteger数据表中元数据在缓存中保存的秒钟数。 使用0或负值指示不缓存schema。 如果大于0和正数,cache被启用,表的元数据将被缓存。CDbConnection
schemaCachingExcludearray元数据不被缓存的列的列表。默认为空字符串。CDbConnection
serverInfostring返回DBMS服务器的信息。CDbConnection
serverVersionstring返回DBMS服务器的版本信息。CDbConnection
statsarray返回SQL执行的统计结果。CDbConnection
tablePrefixstring表名称的默认前缀。默认为 null,意味着没有表前缀。 通过设置这个属性,任何标记像 '{{tableName}}' 在 CDbCommand::text 将 'prefixTableName'替换, 这里 'prefix' 指的是这个属性值。CDbConnection
timeoutinteger返回连接的超时设置。CDbConnection
usernamestring建立数据连接的用户名。默认为空字符串。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)

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

参见

  • setAttributes
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)

返回列名称的大小写情况

参见

  • http://www.php.net/manual/en/pdo.setattribute.php
commandBuilder 属性 只读 public CDbCommandBuilder getCommandBuilder()

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

connectionStatus 属性 只读 public string getConnectionStatus()

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

connectionString 属性 public string $connectionString;

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

参见

  • 注意,如果你使用的是 GBK 或 BIG5 ,推荐你更新到PHP 5.3.6+ , 并指定通过DSN指定charset像下面这样: ‘mysql:dbname=mydatabase;host=127.0.0.1;charset=GBK;’。
currentTransaction 属性 只读 public CDbTransaction getCurrentTransaction()

返回当前活动的事务。

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或序列值。

参见

  • http://www.php.net/manual/en/function.PDO-lastInsertId.php
nullConversion 属性 public mixed getNullConversion()
public void setNullConversion(mixed $value)

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

参见

  • http://www.php.net/manual/en/pdo.setattribute.php
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
queryCachingDuration 属性 (可用自 v1.1.7) public integer $queryCachingDuration;

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

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

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

参见

  • cache
  • queryCachingDependency
  • queryCacheID
schema 属性 只读 public CDbSchema getSchema()

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

schemaCacheID 属性 public string $schemaCacheID;

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

schemaCachingDuration 属性 public integer $schemaCachingDuration;

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

参见

  • schemaCachingExclude
schemaCachingExclude 属性 public array $schemaCachingExclude;

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

参见

  • schemaCachingDuration
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='')
$dsnstring数据源名称,或 DSN,包含连接到数据库所需的信息。
$usernamestringDSN 字符串的用户名。
$passwordstringDSN 字符串的密码。
源码: framework/db/CDbConnection.php#271 (显示) publicfunction__construct($dsn='',$username='',$password='')
{
$this->connectionString=$dsn;
$this->username=$username;
$this->password=$password;
}

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

参见

  • http://www.php.net/manual/en/function.PDO-construct.php
__sleep() 方法
public array __sleep()
{return}array
源码: framework/db/CDbConnection.php#282 (显示) publicfunction__sleep()
{
$this->close();
returnarray_keys(get_object_vars($this));
}

序列化时关闭连接。

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

启动事务。

cache() 方法 (可用自 v1.1.7)
public CDbConnection cache(integer $duration, CCacheDependency $dependency=NULL, integer $queryCount=1)
$durationinteger查询结果保持在缓存中有效的秒数。 如果它是0,缓存将被禁用。
$dependencyCCacheDependency当查询结果保存到缓存时,使用的依赖。
$queryCountinteger在调用此方法后,需要缓存的SQL查询的数目。 默认为 1,意味着下一条SQL查询将被缓存。
{return}CDbConnection返回连接实例本身。
源码: framework/db/CDbConnection.php#353 (显示) publicfunctioncache($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 (显示) protectedfunctionclose()
{
Yii::trace('ClosingDBconnection','system.db.CDbConnection');
$this->_pdo=null;
$this->_active=false;
$this->_schema=null;
}

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

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

创建用于执行的命令。

createPdoInstance() 方法
protected PDO createPdoInstance()
{return}PDO返回pdo实例
源码: framework/db/CDbConnection.php#412 (显示) protectedfunctioncreatePdoInstance()
{
$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';
}
returnnew$pdoClass($this->connectionString,$this->username,
$this->password,$this->_attributes);
}

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

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

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

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

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

参见

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

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

参见

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

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

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

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

参见

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

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

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

返回列名称的大小写情况

参见

  • http://www.php.net/manual/en/pdo.setattribute.php
getCommandBuilder() 方法
public CDbCommandBuilder getCommandBuilder()
{return}CDbCommandBuilder返回此命令生成器
源码: framework/db/CDbConnection.php#521 (显示) publicfunctiongetCommandBuilder()
{
return$this->getSchema()->getCommandBuilder();
}

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

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

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

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

返回当前活动的事务。

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

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

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

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

参见

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

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

参见

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

返回PDO实例。

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

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

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

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

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

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

getSchema() 方法
public CDbSchema getSchema()
{return}CDbSchema当前连接的数据库结构
源码: framework/db/CDbConnection.php#502 (显示) publicfunctiongetSchema()
{
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
thrownewCDbException(Yii::t('yii','CDbConnectiondoesnotsupportreadingschemafor{driver}database.',
array('{driver}'=>$driver)));
}
}

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

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

返回DBMS服务器的信息。

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

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

getStats() 方法
public array getStats()
{return}array返回的数组中第一个元素指示SQL语句执行的数目, 第二个元素指示SQL执行的总时间。
源码: framework/db/CDbConnection.php#798 (显示) publicfunctiongetStats()
{
$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);
returnarray($count,$time);
}

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

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

返回连接的超时设置。

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

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

initConnection() 方法
protected void initConnection(PDO $pdo)
$pdoPDOPDO实例
源码: framework/db/CDbConnection.php#431 (显示) protectedfunctioninitConnection($pdo)
{
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::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('SETNAMES'.$pdo->quote($this->charset));
}
if($this->initSQLs!==null)
{
foreach($this->initSQLsas$sql)
$pdo->exec($sql);
}
}

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

open() 方法
protected void open()
源码: framework/db/CDbConnection.php#365 (显示) protectedfunctionopen()
{
if($this->_pdo===null)
{
if(empty($this->connectionString))
thrownewCDbException(Yii::t('yii','CDbConnection.connectionStringcannotbeempty.'));
try
{
Yii::trace('OpeningDBconnection','system.db.CDbConnection');
$this->_pdo=$this->createPdoInstance();
$this->initConnection($this->_pdo);
$this->_active=true;
}
catch(PDOException$e)
{
if(YII_DEBUG)
{
thrownewCDbException(Yii::t('yii','CDbConnectionfailedtoopentheDBconnection:{error}',
array('{error}'=>$e->getMessage())),(int)$e->getCode(),$e->errorInfo);
}
else
{
Yii::log($e->getMessage(),CLogger::LEVEL_ERROR,'exception.CDbException');
thrownewCDbException(Yii::t('yii','CDbConnectionfailedtoopentheDBconnection.'),(int)$e->getCode(),$e->errorInfo);
}
}
}
}

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

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

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

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

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

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

$this->setActive(true);
if(($value=$this->_pdo->quote($str))!==false)
return$value;
else//thedriverdoesn'tsupportquote(e.g.oci)
return"'".addcslashes(str_replace("'","''",$str),"00nr\32")."'";
}

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

参见

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

打开或关闭DB连接。

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

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

参见

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

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

参见

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

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

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

设置列名称的大小写。

参见

  • http://www.php.net/manual/en/pdo.setattribute.php
setNullConversion() 方法
public void setNullConversion(mixed $value)
$valuemixednull和empty 字符串如何转换。
源码: framework/db/CDbConnection.php#630 (显示) publicfunctionsetNullConversion($value)
{
$this->setAttribute(PDO::ATTR_ORACLE_NULLS,$value);
}

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

参见

  • http://www.php.net/manual/en/pdo.setattribute.php
setPersistent() 方法
public void setPersistent(boolean $value)
$valueboolean此连接是否是持久连接
源码: framework/db/CDbConnection.php#670 (显示) publicfunctionsetPersistent($value)
{
return$this->setAttribute(PDO::ATTR_PERSISTENT,$value);
}

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