Yii数据库储存对象DAO

原创
2013/09/18 18:21
阅读数 212

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();

展开阅读全文
打赏
0
2 收藏
分享
打赏
0 评论
2 收藏
0
分享
返回顶部
顶部