Yii 连接数据库的另一种方法 可以随时换库

PHP 林涛 2923℃ 0评论

数据库存储对象DAO Data Access Objects提供了一个通用的API已访问存储在不同DBMS中的数据,这样数据库改变时可以无需修改访问数据库的代码。

Yii PDO主要由下面四个类组成:
  1.CDbConnection:代表一个数据库链接。
  2.CDbCommand:代表一个执行到数据库的sql语句。
  3.CDbDataReader:represents a forward-only stream of rows from a query result set.
  4.CDbTransaction: represents a DB 事务处理.


建立数据库链接
1.创建一个CDdConnection实例并激活他,一个数据源名字(DSN)被用来指定数据库链接信息,可能会需要用用户名和密码来建立链接,若在链接数据库是出现错误,将会触发一个异常(例如. 错误的 DSN 或无效的 用户名/密码).
——————————————————————————-
$conn = new CDbConnection($dsn,$username,$password);//建立链接,可能会出现异常 |
$conn->charset= 'utf8';  

$conn->active = true; 

………………                                                       |
$conn->active = false;//链接关闭                                               |
——————————————————————————-
DSN的格式取决于使用的PDO数据库驱动,通常一个DSN由PDO驱动名字跟上一个冒号,以及驱动专有的链接语法构成,PDO documentation可以看到完整信息。
常用的DSN格式列表:
———————————————————-
sqlite:sqlite:/path/to/dbfile                            |
mysql: mysql:host=localhost;dbname=testdb                 |
PostgreSQL: pgsql:host=localhost;port=5432;dbname=testdb  |
SQL Server: mssql:host=localhost;dbname=testdb            |
Oracle: oci:dbname=//localhost:1521/testdb                |
———————————————————-
CDbConnection 扩展自 CApplicatonComponent,我们也可以用它作为一个应用组件。
在应用配置中如下配置db(命名不限)应用组件来实现
————————————————————————–
array(
   'components'=>array(
      'db'=>array(
         'class'=>'CDbConnection',
         'connectionString'=>'mysql:host=localhost;dbname=testdb',
         'username'=>'root',
         'password'=>'password',
         'emulatePrepare'=>true, // needed by some MySQL installations
      ),
   ),
),
—————————————————————————–
除非我们明确配置CDbConnection::autoConnect 为false,否则我们就可以通过已自动被激活的Yii::app()->db
来访问此DB链接,通过这个方法,这个单一的DB链接可以在代码中的多处位置共享。
执行sql语句
数据库链接建立好了之后,可以使用CDbCommand来执行生气了语句,可以通过调用CDbConnection::createCommand()来建立一个CDbCommand实例,参数是一个sql语句
——————————————–
$command=$connection->createCommand($sql);  |
 // 若需要, SQL 语句可以被如下更新:         |
// $command->text=$newSQL;                  |
——————————————–
一个sql语句被执行通过CDbCommand以下两种方式
execute():执行非查询语句,例如insert,update,delete,若成功返回影响的记录数目
query():执行一条返回数据记录的sql语句,例如select,返回一个CDbDataReader实例方便起见,一些queryxxx()方法也可以执行直接返回查询结果。
——————————————————–
$rowCount = $command->execute();
$dataReader = $command->query();
$rows=$command->queryAll();
$row =$command->queryRow();
$column =$command->queryColumn();
$value = $command->queryScalar();

如需转载请注明: 转载自26点的博客

本文链接地址: Yii 连接数据库的另一种方法 可以随时换库

转载请注明:26点的博客 » Yii 连接数据库的另一种方法 可以随时换库

喜欢 (0)
发表我的评论
取消评论

表情