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