- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PEAR:创建中间的数据库应用层
疯狂代码 http://CrazyC/ ĵ http:/CrazyC/Php/Article52587.html
什么是DB类
我们首先简单地了解下DB类DB类是PEAR中进行数据操作几个类集合它主要目是提供个统抽象数据接口这
个接口和后端数据库是无关因此如果你应用使用这个通用接口来进行数据库操作那么就能够平滑地切换到区别
数据库下面如MYSQLSQLSYBASE等等实际上DB类希望能够起到简单类似ODBC或者是PERL中DBI作用说到这
里不得不提下PHP中另个优秀库:ADODBADODB也和DB样提供了个抽象中间层而且ADODB所支持后端数据库
要比DB多(至少目前如此)不过ADODB没有直接使用PEAR些特性只是吸取了PEAR许多思想包括DB因此 2者使
用思路方法有许多相似地方我不想评论 2者孰优孰劣大家可以根据个人喜好来使用
为什么要设计抽象中间数据层
在详细讨论DB使用的前我们先讨论下为什么要设计中间数据层这意味着你需要作出些牺牲和让步比如你需
要多写些代码有局限于特定数据库特性将无法直接使用
我们回忆下我们过去做法如何连接到MYSQL数据库?这确是个小儿科问题下面代码你定很熟悉
?php
/**
* 连接到MYSQL数据库
*/
$host = localhost;
$user = root;
$passwd = ;
$persistent = 1;
($persisternt){
$conn = mysql_connect($host,$user,$passwd);
} {
$conn = mysql_pconnect($host,$user,$passwd);
}
?
好了现在建立了数据库连接我们可以使用它来进行数据库操作我们可能使用类似代码
?php
function sql_exec($sql) {
global $db_Name;
$result = mysql_db_query($db_dbName,$sql);
(!$result) {
echo mysql_errno. : .mysql_error. br$sqlbr;
exit;
}
$result;
}
$db_Name = test;
$sql = select * from users;
$result = sql_exec($sql);
while( $row = mysql_fetch_row($result) ){
echo 姓名:$row[0] 性别:$row[1] 年龄 $row[2]br;
}
mysql_free_result($result);
?
看起来很不错是吗?你可能在你代码里使用很多类似代码片段但是不要太高兴问题来了假如突然你数据
库需要从MYSQL迁移到别数据库平台比如ORACLESYBASE迁移原因很多也许是你老板突发奇想认为这样能卖
个好价钱或者是你数据猛增导致MYSQL性能下降总的迁移是事在必行了你如何做你也许会想呵呵这简单把相关
替换下不就行了
听起来简单但是……首先连接数据库要改需要把mysql_connect和mysql_pconnect替换成OCILogon和
OCIPLogonmysql_errno和mysql_error当然不能使用你需要从OCIError返回中提取响应信息
这还不是太糟最糟是相关mysql_fetch_row,mysql_fetch_.gif /等语句遍布于你许多代码和过程中你需要
逐查找分析然后重新替换或者编写相应ORACLE版本如果你数据库操作是集中在个某个模块或类中这项工作还
可以接受否则等于你重新阅读和修改了绝大部分代码即使这个不幸人不是你那么他也会暗地里诅咒你;=)
以上我们回忆了我们以前做法以及可能带来不幸那么如果使用DB类来做类似操作应该是什么样呢?下面是
相应DB版本代码
?php
_once DB.php;
/*
* 连接到数据库
*/
$db_host = localhost;
$db_user = root;
$db_passwd = ;
$db_dbName = test;
$PersistentConne
您可能关注的文档
最近下载
- 工程弹塑性力学题库及答案.pdf
- SHS35-39除尘脱硫课程设计.docx
- 人教版美术六年级下册期末测试题+答案.docx
- 北师大版八年级下册数学期末几何压轴题专练(含答案).docx VIP
- 2024首届全国红旗杯班组长大赛题库及答案(第4001-6000题).docx VIP
- 2024首届全国红旗杯班组长大赛题库及答案(2001-4000题).docx VIP
- 2024首届全国红旗杯班组长大赛题库及答案 (1一2000题).docx VIP
- YJK隔震结构设计手册.pdf
- 小学四年级春季学期《道德与法治》(统编版)学习任务单(全册汇总).doc
- 党史新中国史改革开放史社会主义发展史四史学习教育.pptx VIP
文档评论(0)