程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP開發框架Yii Framework教程(24) 數據庫-DAO示例

PHP開發框架Yii Framework教程(24) 數據庫-DAO示例

編輯:PHP綜合

據訪問對象(DAO) 對訪問存儲在不同數據庫管理系統(DBMS)中的數據提供了一個通用的API。 因此,在將底層 DBMS 更 換為另一個時,無需修改使用了 DAO 訪問數據的代碼。

Yii DAO 基於 PHP Data Objects (PDO) 構建。它是一個為眾多 流行的DBMS提供統一數據訪問的擴展,這些 DBMS 包括 MySQL, PostgreSQL 等等。因此,要使用 Yii DAO,PDO 擴展和特定的 PDO 數據庫驅動(例如PDO_MYSQL) 必須安裝。

Yii DAO 主要包含如下四個類:

CDbConnection: 代表一個數據庫 連接。

CDbCommand: 代表一條通過數據庫執行的 SQL 語句。

CDbDataReader: 代表一個只向前移動的,來自一個查詢結果集中的行的流。

CDbTransaction: 代表一個數據庫事務。

下面,我們介紹 Yii DAO 在不同場景中的應用。 1. 建立數據庫連接

要建立一個數據庫連接,創建一個 CDbConnection 實例並將其激活。 連接到數據庫需要一個數據源 的名字(DSN)以指定連接信息。用戶名和密碼也可能會用到。 當連接到數據庫的過程中發生錯誤時 (例如,錯誤的 DSN 或無 效的用戶名/密碼),將會拋出一個異常。

$connection=new CDbConnection($dsn,$username,$password);     
// 建立連接。你可以使用  try...catch 捕獲可能拋出的異常     
$connection->active=true;     
......     
$connection->active=false;  // 關閉連接

DSN 的格式取決於所使用的 PDO 數據庫驅動。總體來說, DSN 要含 有 PDO 驅動的名字,跟上一個冒號,再跟上驅動特定的連接語法。可查閱 PDO 文檔 獲取更多信息。 下面是一個常用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 繼承自 CApplicationComponent,我們也可以將其作為一個 應用組件 使用。要這樣做的話, 請在 應 用配置 中配置一個 db (或其他名字)應用組件如下:

本例使用MySQL chinook 數據庫,修改 protected/config/main.php

'components'=>array(     
    'db'=>array(     
            'class'=>'CDbConnection',     
            'connectionString'=>'mysql:host=localhost;dbname=chinook',     
            'username'=>'root',     
            'password'=>'password',     
            'emulatePrepare'=>true,  // needed by some MySQL installations     
            ),     
        ),

然後我們就可以通過 Yii::app()->db 訪問數據庫連接了。它已經被自動激活了,除非我們特意配置了 CDbConnection::autoConnect 為 false。通過這種方式,這個單獨的DB連接就可以在我們代碼中的很多地方共享。

2. 執行 SQL 語句

數據庫連接建立後,SQL 語句就可以通過使用 CDbCommand 執行了。你可以通過使用指定的SQL語句作為 參數調用 CDbConnection::createCommand() 創建一個 CDbCommand 實例。

為簡單起見,我們使用Chinook數據庫中的 Employee表,修改DataModel

class DataModel     
{     
    public $employeeId;     
    public $firstName;     
    public $lastName;     
    public $title;     
    public $address;     
    public $email;     
}

注:創建DataModel這一步可以選。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved