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 還是看情況了。
以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 還是看情況了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.