ADODB , ADODB_lite

ADODB是一套功能強大的數據庫抽象類,可以支持很多種數據庫,功能很多。但由於它太過於龐大,網上很多人感覺它比較慢,而這時就產生了簡化版的ADODB,也就是 ADODB_lite ,但ADODB_lite 與ADODB事實上沒有任何關係,它不是把ADODB刪除一些代碼而直接得到的,它們是獨立的兩個工程,只是ADODB_lite使用了一個簡化的ADODB接口。網上的測試人員認爲,ADODB_lite只需要ADODB 1/6的內存,而且工作速度比 ADODB 快很多。
以ADODB_lite 官方資料說:基於 ADODB的網站幾乎可以不用修改,直接用於 ADODB_lite 。但事實卻不是這樣幸運。因爲ADODB_lite 只有部分 ADODB的功能。如果你用了ADODB中的那些“高級”功能,那你就不得不改你的代碼了。

以下列出主要的 ADODB中有,而 ADODB_lite 中沒有的函數


UserDate       
UserTimeStamp  
UnixDate
UnixTimeStamp
PageExecute    
CacheExecute
CachePageExecute
GetUpdateSQL
GetInsertSQL

簡要說明一下如果改寫
UserDate
 摘要:這個功能是回一個格化式的日期字符串,默認爲 "Y-m-d"
 ADODB中是這樣用
 $db->UserDate($rs->fields['theDate'],$fmtstr);
 
 ADODB_lite 中
 date($fmtstr,strtotime($rs->fields['theDate']));

 例子:
  date('Y-m-d H:i:s',strtotime($rs->fields['theDate']));

 說明:$fmtstr 爲日期格式化字符串。lite版中必須需用strtotime.

UserTimestamp
  摘要:這個函數返回一個長時間。如:2005-09-10 08:38:23 這個比較簡單。(注:ADODB的這個功能是在 ADORecordSet 上的,讓人有點難於理解)
  ADODB
    $rs->UserTimestamp($rs->fields['thetime']);
  
  ADODB_lite
    date('Y-m-d H:i:s',strtotime($rs->fields['thetime']));
  
  說明:這 UserDate 與 UserTimestamp 的處理方法實際上其實是一樣的。

PageExecute
  摘要:這個方法相當常用。分頁查詢功能,指定一個每頁多少個記錄,指定返回第幾頁。page 是以1 爲開始的。

  ADODB
    $rs = $db->PageExecute($sql , PAGE_SIZE, $page);

  ADODB_lite 的替代方法:
    $rs = $db->SelectLimit($sql ,PAGE_SIZE, ($page -1) * PAGE_SIZE);
  
  說明:ADODB_lite中用 SelectLimit 來替代 PageExecute 。其實這兩種方法的差別不大。改動的地方也不多。

GetInsertSQL
  摘要:用數組的方式來指定需要插入的字段與值,再於數庫表對應的RecordSet一起得到"insert into" SQL. 再用 ADOConnection.Execute($sql);執行插入語句

  ADODB
    $rs = $db->Execute("select * from users where userid = 0 ");
    $record = array();
    $record['userid'] = 1;
    $record['username'] = 'user_name';
    $sql = $db->GetInertSQL($rs,$record);
    $db->Execute($sql);

  ADODB_lite 替代方法
    沒有什麼好的替代方法,只有自己構建出 insert sql ,再執行了。
    $sql ="insert into users (userid,username) values(1,'user_name')";
    $db->Execute($sql);
  
  說明:GetInsertSQL相當方便,特別是在插入一個大表的情況下。但ADODB_lite中沒有。只能自己構建。


GetUpdateSQL
  摘要:對 GetInsertSQL 差不多。只是這個得到的是 Update SQL .

  ADODB
    $rs= $db->Execute("select * form users where userid = $userid");
    if ($rs->EOF) {
        die("沒有這個用戶的資料,錯誤!");
    }
    $record = array();
    $record['passwd'] = md5($pass1);
    $sql = $db->GetUpdateSQL($rs,$record);
    $db->Execute($sql);

 ADODB_lite 替代方法
   也只有自己構建sql
   $pass1 = md5($pass1);
   $sql = "update users set passwd= $pass1 where userid = $userid";
   $db->Execute($sql);

 說明:GetUpdateSQL相當方便,特別是在更新一個大表的情況下。但ADODB_lite中沒有。只能自己構建。


總的來說,也就這些了。看來 ADODB_lite 犧牲了ADODB的部分功能要提高了速度的。至於要用 ADODB 還是 ADODB_lite 還是看情況了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章