Yii数据库储存对象DAO

Yii DAO 主要由下面四个类组成:
CDbConnection: 代表一个数据库连接.
CDbCommand: 代表一个执行到数据库的 SQL 语句.
CDbDataReader: represents a forward-only stream of rows from a query result set.
CDbTransaction: represents a DB 事务处理.
下面我们介绍在不同场景中 Yii DAO 的用法.
建立数据库连接
要建立一个数据库连接, 需要创建一个 CDbConnection 实例并激活它. 一个数据源名字(DSN) 被用来指定数据库连接信息. 可能也会需要用户名和密码来建立连接.若在连接数据库时出现错误,将会触发一个异常(例如. 错误的 DSN 或无效的 用户名/密码).
1 $connection=new CDbConnection($dsn,$username,$password);
2 // establish connection. You may try…catch possible exceptions
3 $connection->active=true;
//激活连接
4 ……
//关闭连接
5 $connection->active=false;
因为 CDbConnection 扩展自 CApplicationComponent, 我们也可以使用它作为一个应用组件. 我们可以在应用配置中如下配置 db (或其他名字) 应用组件,来实现此目的
在config/main.php配置如下

      'db'=>array(

06 'class'=>'CDbConnection',
07 'connectionString'=>'mysql:host=localhost;dbname=testdb',
08 'username'=>'root',
09 'password'=>'password',
10 'emulatePrepare'=>true,

除非我们明确配置CDbConnection::autoConnect 为 false,否则我们就可以通过已自动被激活的 Yii::app()->db 来访问此 DB 连接, 通过这个方法, 这个单一的 DB 连接可以在代码中的多处位置共享.

执行 SQL 语句
一旦一个数据库连接建立, 就可以使用 CDbCommand 来执行 SQL 语句. 可以通过调用CDbConnection::createCommand()来创建一个CDbCommand 实例,参数是一个 SQL 语句:
1 $command=$connection->createCommand($sql);
2 // 若需要, SQL 语句可以被如下更新:
3 // $command->text=$newSQL;
一个 SQL 语句被执行通过 CDbCommand 以下面两种方式:

    1. execute(): 执行一个非查询的 SQL 语句, 例如 INSERT, UPDATE 和 DELETE. 若成功执行, 返回影响的记录数目.
    2.query(): 执行一条返回数据记录的 SQL 语句, 例如 SELECT. 若成功, 返回一个 CDbDataReader 实例. 方便起见, 一些 queryXXX() 方法也可以执行直接以返回查询结果.

在 CDbCommand::query() 产生 CDbDataReader 实例后, 可以通过反复调用CDbDataReader::read()来取得结果集的记录. 也可以在 PHP 的foreach 语言结构中使用CDbDataReader 以逐行检索记录.
1 $dataReader=$command->query();
2 // calling read() repeatedly until it returns false
3 while(($row=$dataReader->read())!==false) { … }
4 // using foreach to traverse through every row of data
5 foreach($dataReader as $row) { … }
6 // retrieving all rows at once in a single array
7 $rows=$dataReader->readAll();

你可能感兴趣的:(Yii数据库储存对象DAO)