ADODBLite和Adodb不同之处

[数据库] ADODB Lite:一个轻量级的ADODB实现

[url]http://adodblite.sourceforge.net/[/url]

更重视速度的体积,压缩包仅有几十K,身材比ADODB苗条了一些.使用方法一模一样,支持的列表:

$db->;Execute($sql, [$inputarray])
$db->;Query($sql, [$inputarray])
$db->;SelectLimit( $sql, [nrows], [offset], [$inputarray] ) – Not supported for all databases
$db->;LimitQuery( $sql,[offset], [nrows], [$inputarray] ) – Not supported for all databases
$db->;Insert_ID()
$db->;close()
$db->;Disconnect()
$db->;ErrorMsg()
$db->;ErrorNo()
$db->;ErrorNative()
$db->;Version()
$db->;IsConnected()
$db->;SetFetchMode($mode) – $mode = ‘ADODB_FETCH_DEFAULT’|’ADODB_FETCH_NUM’|’ADODB_FETCH_ASSOC’|’ADODB_FETCH_BOTH’
$db->;SelectDB($dbname)
$db->;GetOne($sql)
$db->;GetRow($sql)
$db->;GetAll($sql)
$db->;GetArray($sql)
$db->;GetCol($sql)
$db->;Affected_Rows()
$db->;qstr($string, [$magic_quotes])
$db->;Quote($string)
$db->;Qmagic($string)

$ADODB_FETCH_MODE = ‘ADODB_FETCH_DEFAULT’|’ADODB_FETCH_NUM’|’ADODB_FETCH_ASSOC’|’ADODB_FETCH_BOTH’

$result->;Fields([column])
$result->;Fields
$result->;RecordCount()
$result->;NumRows()
$result->;FieldCount()
$result->;NumCols()
$result->;MoveNext()
$result->;MoveFirst()
$result->;MoveLast()
$result->;Move([row])
$result->;EOF()
$result->;EOF
$result->;GetArray([nRows])
$result->;GetRows([nRows])
$result->;GetAll([nRows])
$result->;FetchRow()
$result->;FetchInto($array)
$result->;close()
$result->;Free()

新版增加了session handling的支持,也就是用数据库存取session数据 :mrgreen:

[[i] 本帖最后由 HonestQiao 于 2006-6-8 21:48 编辑 [/i]]

 

HonestQiao 2005-7-28 13:51
ADODB Lite:一个轻量级的ADODB实现

什么叫做,更重视速度的体积???

 

carset 2005-7-28 14:19
ADODB Lite:一个轻量级的ADODB实现

不用.偶觉得php做的已经非常好了.
:D 偶很满意.

 

MicroHard 2005-7-28 18:14
ADODB Lite:一个轻量级的ADODB实现

可惜不支持informix数据库

 

carset 2005-7-29 00:53
ADODB Lite:一个轻量级的ADODB实现

[quote][i]原帖由 “MicroHard”]可惜不支持informix数据库[/quote 发表:[/i]

:shock:

拜托自己看看手册。那里不支持 informix 了 ?

http://www.php.net/manual/zh/ref.ifx.php

看看这个链接里说的是什么… :em03:

 

wsswan 2005-7-29 01:43
ADODB Lite:一个轻量级的ADODB实现

[quote][i]原帖由 “carset” 发表:[/i]

:shock:

拜托自己看看手册。那里不支持 informix 了 ?

http://www.php.net/manual/zh/ref.ifx.php

看看这个链接里说的是什么… :em03:[/quote]

手册上的 Introduction:

‘We currently support MySQL, Oracle, Microsoft SQL Server, Sybase, Sybase SQL Anywhere, Informix, PostgreSQL, FrontBase, SQLite, Interbase (Firebird and Borland variants), Foxpro, Access, ADO, DB2, SAP DB and ODBC. We have had successful reports of connecting to Progress and CacheLite via ODBC. We hope more people will contribute drivers to support other databases.’

不过搞来搞去只是 runs only windows ,那就没意思了。而且我很粗劣的看了看代码,万变不离宗,还是要求 PEAR::DB ,这更没意思了,因为在很多极端的情况下,PEAR::DB 不能和标准的 PHP MySQL API 共同运行。

 

stdafx 2005-7-29 02:09
ADODB Lite:一个轻量级的ADODB实现

东西不错.

 

garfield61 2005-9-3 02:04
ADODB Lite:一个轻量级的ADODB实现

ADODBLITE里的LimitQuery方法不支持MYSQL数据库呀。
真不爽。还好有一个SelectLimit方法

 

puppy19761210 2005-9-14 03:44
ADODB Lite:一个轻量级的ADODB实现

请问这个可以在linux下运行吗?谢谢!

 

dozec 2005-9-14 13:49
ADODB Lite:一个轻量级的ADODB实现

对于个例项目的数据库操作开发完全可以自己封闭成一些类来进行,我一般都是这样,位于其上的是业务逻辑类,再其上的就是接收数据和检查的类。

但对于像ADO.NET这样的重量级的东东来说我一直比较敬畏,因为写得太好了,用起来也比较舒服。JDBC没用过。ADODB Lite没用过。

 

spiceboy 2005-9-24 20:57
ADODB Lite:一个轻量级的ADODB实现

php5下有ADO,这东西就该扔了。

 

bs 2006-1-9 07:43
php5 下有 PDO

 

ccniao 2006-6-8 10:13
转自[url]http://redsoft.yculblog.com/post.879819.html[/url]
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 还是看情况了。

 

dz902 2006-6-8 11:34
[quote]原帖由 [i]wsswan[/i] 于 2005-7-29 11:43 发表

手册上的 Introduction:

‘We currently support MySQL, Oracle, Microsoft SQL Server, Sybase, Sybase SQL Anywhere, Informix, PostgreSQL, FrontBase, SQLite, Interbase (Firebird and Borland variants), Foxpro, Access, ADO, DB2, SAP DB and ODBC. We have had successful reports of connecting to Progress and CacheLite via ODBC. We hope more people will contribute drivers to support other databases.’

不过搞来搞去只是 runs only windows ,那就没意思了。而且我很粗劣的看了看代码,万变不离宗,还是要求 PEAR:DB ,这更没意思了,因为在很多极端的情况下,PEAR:DB 不能和标准的 PHP MySQL API 共同运行。[/quote]

什么是「[color=red]runs only windows[/color]」?如果你是说 windows only 的话,不知道你是说 PHP 本身还是 ADODB Lite,它们都不是 windows only。

另外,请问你看的什么代码?ADODB 和 PEAR 没有直接联系,也不要求 PEAR。

其三,PEAR:DB 和标准 PHP MySQL API 「同行」是什么意思?如果说「不能同行」是效果不一样的话,那么什么是「极端情况」?

[quote]原帖由 [i]puppy19761210[/i] 于 2005-9-14 13:44 发表
请问这个可以在linux下运行吗?谢谢! [/quote]

是可以的。

[quote]原帖由 [i]dozec[/i] 于 2005-9-14 23:49 发表
对于个例项目的数据库操作开发完全可以自己封闭成一些类来进行,我一般都是这样,位于其上的是业务逻辑类,再其上的就是接收数据和检查的类。

但对于像ADO.NET这样的重量级的东东来说我一直比较敬畏,因为写得 … [/quote]

ADODB 不是指 ADO.NET。

 

dz902 2006-6-8 11:40
[quote]原帖由 [i]spiceboy[/i] 于 2005-9-25 06:57 发表
php5下有ADO,这东西就该扔了。 [/quote]

不一定,看

[quote]
Does this make ADOdb superflous? If you are looking for something very simple, then ADOdb is probably not for you. [color=red]However ADOdb still has a big role to play, because PDO does not provide an infrastructure for enterprise database access, such as portable handling of data types and schemas, recordset caching, sql logging and tuning, session management and other nice ADOdb features[/color]. Secondly, if you come from a Microsoft background (like me), it is very easy to learn ADOdb.
[/quote]

From [url]http://phplens.com/phpeverywhere/?q=node/view/1[/url]

 

HonestQiao 2006-6-8 13:48
php5是PDO吧

 

mikespook 2006-6-8 16:12
[quote]原帖由 [i]dz902[/i] 于 2006-6-8 19:40 发表

不一定,看

From [url]http://phplens.com/phpeverywhere/?q=node/view/1[/url] [/quote]

的确,如果有windows下数据库开发背景,使用ADODB比使用PDO要容易,但是如果已经接受了PHP原生或DB,MDB,MDB2的开发思路,PDO要容易理解~~~

不过在我的框架里数据库有这几种不同的实现二次封装~~现场部署的时候根据具体环境选择具体的底层数据库封装~~~毕竟不是每个服务器都有PDO用~~~

 

HonestQiao 2006-6-9 00:55
现场部署的时候根据具体环境选择具体的底层数据库封装

这个是基本要考虑和实施的

 

dz902 2006-6-9 02:21
[quote]原帖由 [i]mikespook[/i] 于 2006-6-9 02:12 发表

的确,如果有windows下数据库开发背景,使用ADODB比使用PDO要容易,但是如果已经接受了PHP原生或DB,MDB,MDB2的开发思路,PDO要容易理解~~~

不过在我的框架里数据库有这几种不同的实现二次封装~~现场 … [/quote]

其实两个东西面向的用户都不同,而且也不是同一个东西。而且 ADODB 也封装了 PDO。

[quote]
[color=red]PDO is [b]not[/b] a query abstraction layer like ADODB ([url]http://adodb.sourceforge.net/)[/url] or Pear DB ([url]http://pear.php.net/package/DB)[/url][/color]; it provides how we access the databases and how the result from the databases are handled, projects like ADODB might implement a PDO backend, but do not get confused and think that these two things are the same.



发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 1 = 6