中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > 综合其它
PHP5数据对象(PDO)抽象层与Oracle数据库(2)
作者:佚名 时间:2007-09-13 16:38 出处:甲骨文 责编:月夜寒箫
              摘要:PHP5数据对象(PDO)抽象层与Oracle数据库(2)

连接 PDO



首先创建 PDO 类的一个实例,将其用作数据库句柄。使用哪个基础驱动程序并不重要;您总要使用 PDO 类名。构造函数的第一个参数为数据源名称 (DSN),第二个参数为用户名,第三个参数为该用户名的口令。DSN 的 PDO 命名惯例为 PDO 驱动程序的名称,后面一个冒号,再后面是可选的驱动程序特定的信息。在我们的示例中,会加载 OCI 驱动程序但不指定任何其他信息;这样会使用默认的数据库。对于其他驱动程序,如 ODBC 驱动程序,第一个冒号后面的所有内容都将被用作 ODBC DSN。MySQL 驱动程序会同样以不同的方式解释它的 DSN。

如果无法加载该驱动程序,或者发生了连接失败,则会抛出一个 PDOException,以便您可以决定如何最好地处理该故障。

getMessage();
}
?>


在连接字符串中,您可以指定两个可选参数;第一个是数据库名称,第二个是字符集;这些参数与可选的第三个和第四个参数相对应,后两个参数您可能在 oci8 扩展函数 ociconnect() 或 ociplogon() 中使用过。要使用特定的字符集连接一个特定的数据库,则可以执行下列操作:

getMessage();
}
?>


省略 try..catch 控制结构并无裨益。如果在应用程序的较高级别没有定义异常处理,则在无法建立数据库连接的情况下,该脚本会终止。

连接管理



目前,PDO 完全没有执行自己的任何连接管理,因此每个“新 PDO”调用都会建立一个新的数据库连接。该连接在 $dbh 变量越界时,或者当您为其指定 NULL 值时会被释放。

getMessage();
exit;
}
// 在此处对数据库执行一些操作
// ...
// 现在完成,释放该连接
$dbh = null;
?>


计划在不久的将来为 PDO 增加连接缓存功能;就当前的 oci8 扩展而言,会重用与现有服务器的连接,并且在这些连接中,还会重用闲置的登录。当在缓存连接模式中运行时,如上面的代码段所示释放 $dbh 时会将该登录标记为可由其他连接重用。

如果您使用 ODBC 驱动程序访问 Oracle,则可能会很高兴地注意到,默认情况下 PDO_ODBC 驱动程序支持 ODBC 连接池。

使用 PDO



了解一个编程 API 的最好方式就是使用它,因此我们来看一下附带的这个演示,以了解如何进行批次更新(代码如下)。

exec("
CREATE TABLE CREDITS (
extension varchar(255),
name varchar(255)
)");
// start a transaction
$dbh->beginTransaction();
// prepare to insert a large quantitiy of data
$stmt = $dbh->prepare("INSERT INTO CREDITS (extension, name) VALUES (:extension, :name)");
// bind the inputs to php variables; specify that the data will be strings
// with a maximum length of 64 characters
$stmt->bindParam(':extension',$extension,PDO_PARAM_STR, 64);
$stmt->bindParam(':name', $name,PDO_PARAM_STR, 64);
// Open the .csv file for import
$fp = fopen('credits.csv', 'r');
while (!feof($fp)) {
list($extension, $name) = fgetcsv($fp, 1024);
$stmt->execute();
}
fclose($fp);
// Commit the changes
$dbh->commit();
?>
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有