数据库存储对象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 连接数据库的另一种方法 可以随时换库