Yii框架之DAO的基本操作

DAO的基本操作
Main.php中

\'writer\'=>array(
\'class\' => \'CDbConnection\',
\'connectionString\' => \'mysql:host=localhost;dbname=guestbook\',
//\'emulatePrepare\' => true,
\'username\' => \'root\',
\'password\' => \'123456\',
\'charset\' => \'utf8\',
),

1、 数据增加

$connection = Yii::app()->writer;
$sql = \"INSERT INTO `book`
(name,content,time) VALUES (:name,:content,:time)\";
$command = $connection->createCommand($sql);
$name = \'testName\'; //name字段的值
$content = \'testContent\';//content字段的值
$time = time(); //time字段的值
$command->bindParam(\":name\",$name,PDO::PARAM_STR); //其中的变量$name 必须以变量传值方式---不能直接给予实参
$command->bindParam(\":content\",$content,PDO::PARAM_STR);//其中的变量$content必须以变量传值方式---不能直接给予实参
$command->bindParam(\":time\",$time,PDO::PARAM_INT);//其中的变量$time 必须以变量传值方式---不能直接给予实参
$command->execute();

2、数据修改

$connection = Yii::app()->writer;
$sql = \"UPDATE `book` SET name = \'names\' WHERE id = :id\";
$command = $connection->createCommand($sql);
$id = 91145;
$command->bindParam(\':id\',$id,PDO::PARAM_INT); //其中的变量$ id 必须以变量传值方式---不能直接给予实参
$command->execute();

3、数据的删除

$connection = Yii::app()->writer;
$sql = \"DELETE FROM `book` WHERE id = :id\";
$command = $connection->createCommand($sql);
$id = 91145;
$command->bindParam(\':id\',$id,PDO::PARAM_INT); //其中的变量$ id 必须以变量传值方式---不能直接给予实参
$command->execute();

4、数据的查询

$connection = Yii::app()->writer;
$sql = \"SELECT * FROM `book` ORDER BY id DESC\";//如使用where 可采用绑定 例:WHERE id = :id
$command = $connection->createCommand($sql);
$result = $command->queryAll();
print_r($result);

DAO
1、 易用性比Active Record弱
2、 使用DAO,会繁琐的写sql语句,在日常的作业过程中,还可能会影响其开发效率
3、 应用程序的数据库操作性能会得到很大的提升
4、 失去了Yii模型中自身的一些验证功能—校验器(但是可以自定义模型,继承ActiveRecord类实现)
5、 分布式解决方案与Active Record一样,严格来说DAO更容易扩展(特别是在拆分表的的时候) 这条纯属于个人看法—需讨论得出最终结果

Active Record
1、 易用性比DAO强
2、 可以简化大量繁琐的sql语句,开发效率极高
3、 应用程序的数据操作性能没DAO好
4、 验证功能非常强大拥有校验器
5、 分布式服务器环境中扩展没DAO灵活 这条纯属于个人看法—需讨论得出最终结果

结论:
如果数据记录的查询量不是很多与并发不是很高 可以采用Active Record
查询量很大,并发很高 可以考虑DAO

你可能感兴趣的:(DAO,yii)