封装了ORACLE函数的数据库操作类

 

<?php // -*- C++ -*-
/*
* $Id: db-oci8.phl,v 1.2 1998/10/01 <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />19:16:06 ssb Exp $
*/

$db_error_code = 0;
$db_error_msg = false;
$db_error_source = false;

/*
* Database specific notes:
*
* - You must configure Oracle listener to use this abstraction layer.
*
*/

/**
* @function db_connect
* @purpose Connect to a database
* @desc
* Connects to a database and returns and identifier for the connection.
* @arg database
* Data source name or database host to connect to.
* @arg user
* Name of user to connect as.
* @arg password
* The user's password.
*/
function db_connect($database, $user, $password)
{
$ret = @OCILogon($user, $password, $database);
db_check_errors($php_errormsg);
return $ret;
}

/*
* Function: db_query
* Arguments: $conn (int) - connection identifier
* $query (string) - SQL statement to execute
* Description: executes an SQL statement
* Returns: false - query failed
* integer - query succeeded, value is result handle
*/
function db_query($conn, $query)
{
$stmt = @OCIParse($conn, $query);
db_check_errors($php_errormsg);
if (!$stmt) {
return false;
}
if (@OCIExecute($stmt)) {
return $stmt;
}
db_check_errors($php_errormsg);
@OCIFreeStatement($stmt);
return false;
}

/*
* Function: db_fetch_row
* Arguments: $stmt (int) - result identifier
* Description: Returns an array containing data from a fetched row.
* Returns: false - error
* (array) - returned row, first column at index 0
*/
function db_fetch_row($stmt)
{
$cols = @OCIFetchInto($stmt, &$row);
if (!$cols) {
db_check_errors($php_errormsg);
return false;
}
return $row;
}

/*
* Function: db_free_result
* Arguments: $stmt (int) - result identifier
* Description: Frees all memory associated with a result identifier.
* Returns: false - failure
* true - success
*/
function db_free_result($stmt)
{
global $db_oci8_pieces;

if (isset($db_oci8_pieces[$stmt])) {
unset($db_oci8_pieces[$stmt]);
}
$ret = @OCIFreeStatement($stmt);
db_check_errors($php_errormsg);
return $ret;
}

/*
* Function: db_disconnect
* Arguments: $connection (int) - connection identifier
* Description: closes a database connection
* Returns: false - failure
* true - success
*/
function db_disconnect($connection)
{
$ret = @OCILogoff($connection);
db_check_errors($php_errormsg);
return $ret;
}

/*
* Function: db_autocommit
* Arguments: $connection (int) - connection identifier
* Description: turn autocommit on or off
* Returns: false - failure
* true - success
*/
function db_autocommit($connection, $enabled)
{
if (!$enabled) {
db_post_error(0, "Transactions not yet implemented");
return false;
}
return true;
}

function db_commit($connection)
{
return true;
}

function db_rollback($connection)
{
db_post_error(0, "Transactions not yet implemented");
return false;
}

function db_quote_string($string)
{
$ret = ereg_replace( "'", "''", $string);
return $ret;
}

function db_prepare($connection, $query)
{
global $db_oci8_pieces;

$pieces = explode( "?", $query);
$new_query = "";
$last_piece = sizeof($pieces) - 1;
print "<br>last_piece=$last_piece\n";
while (list($i, $piece) = each($pieces)) {
$new_query .= $piece;
if ($i < $last_piece) {
$new_query .= ":var$i";
}
}
print "<br>new_query=$new_query\n";
$stmt = @OCIParse($connection, $new_query);
if (!$stmt) {
db_check_errors($php_errormsg);
return false;
}
for ($i = 0; $i < $last_piece; $i++) {
$bindvar = ":var$i";
print "<br>trying to bind $bindvar\n";
if (!@OCIBindByName($stmt, $bindvar, &$db_oci8_pieces[$stmt][$i])) {
db_check_errors($php_errormsg);
@OCIFreeStatement($stmt);
return false;
}
}
return $stmt;
}

function db_execute($stmt, $data)
{
global $db_oci8_pieces;

while (list($i, $value) = each($data)) {
$db_oci8_pieces[$stmt][$i] = $data[$i];
}
$ret = @OCIExecute($stmt);
if (!$ret) {
db_check_errors($php_errormsg);
return false;
}
return true;
}

function db_error_code()
{
global $db_error_code;
return $db_error_code;
}

function db_error_msg()
{
global $db_error_msg;
return $db_error_msg;
}

function db_error_source()
{
global $db_error_source;
return $db_error_source;
}

function db_check_errors($errormsg)
{
global $db_error_code, $db_error_msg, $db_error_source;
if (ereg( '^([^:]*): (...-.....): (.*)', $errormsg, &$data)) {
list($foo, $function, $db_error_code, $db_error_msg) = $data;
$db_error_msg = "$function: $db_error_msg";
$db_error_source = "[Oracle][PHP][OCI8]";
} elseif (ereg( '^([^:]*): (.*)', $errormsg, &$data)) {
list($foo, $function, $db_error_msg) = $data;
$db_error_msg = "$function: $db_error_msg";
$db_error_code = 0;
$db_error_source = "[PHP][OCI8][db-oci8]";
} else {
$db_error_msg = $errormsg;
$db_error_code = 0;
$db_error_source = "[PHP][OCI8][db-oci8]";
}
}

function db_post_error($code, $message)
{
global $db_error_code, $db_error_msg, $db_error_source;
$db_error_code = $code;
$db_error_msg = $message;
$db_error_source = "[PHP][OCI8][db-oci8]";
}

function db_api_version()
{
return 10; // 1.0
}

?>

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

时间: 2024-09-03 12:04:15

封装了ORACLE函数的数据库操作类的相关文章

asp.net Oracle 数据库操作类

操作类 using System; using System.Data; using System.Configuration; using System.Data.OracleClient; using System.Text; using System.Windows.Forms; using System.Xml; using Transactions; /// <summary> /// DB 的摘要说明 Written By Luos.Luo ,the creator of Sale

谁有asp.net连接oracle数据库操作类,要存储过程模式的?

问题描述 谁有asp.net连接oracle数据库操作类,要存储过程模式的? 解决方案 解决方案二:这个还没有用过,帮你up把解决方案三:我也没有用过oracle

PHP封装数据库操作类(链接数据库)

有面向对象技术基础的编程人员看一天就可以写起来了.而PHP在访问数据库的时候又经常会出现各种问题,如字符编码问题.SQL语法错误问题.PHP处理数据记录对象和返回对象的问题等.我这里写了一个数据库操作类,封装了数据库增删添改等操作,很方便使用.用这个类,可以加速网站的后台开发. 优点: 1.方便快捷, 数据库操作只需调用接口; 2.统一编码(utf8),不易导致乱码 3.结构清晰. 如处理前端请求的后台程序(test.php) + 表封装类(user.class.php) + 数据库封装类(db

一个ASP.NET的MYSQL的数据库操作类自己封装的_实用技巧

/** * 类说明:对MYSQL数据库的操作类 */ using System; using System.Data; using MySql.Data.MySqlClient; namespace Niunan.BYLW.Utility { /// <summary>对MYSQL数据库的操作类 /// /// </summary> public class MYSQLHelper { private MySqlConnection conn = null; private MyS

自己封装的ASP.NET的MYSQL的数据库操作类

代码 /** * 作者:牛腩 * 创建时间:2010年3月7日17时35分 * 类说明:对MYSQL数据库的操作类 */ using System;using System.Data;using MySql.Data.MySqlClient; namespace Niunan.BYLW.Utility{    /// <summary>对MYSQL数据库的操作类    ///     /// </summary>    public class MYSQLHelper    {  

[原创] EasyASP v1.5简化ASP开发,包含数据库操作类

EasyASP v1.5简化ASP开发,包含数据库操作类 EasyASP是一个方便快速开发ASP的类,其中包含了一个数据库控制类(原clsDbCtrl.asp,对原代码作了优化和修改,包含对数据库的各类操作及存储过程的调用,全部封装在Easp.db中,使用起来会更方便,调用也更简单).而Easp类中提供了大量实用的ASP通用过程及方法,可以简化大部分的ASP操作.目前只提供了VBScript版,JScript版将来可能会提供.详细说明请下载帮助手册,里面有非常详细的使用方法说明及源码范例. 源码

最好用的PHP数据库操作类-ezSQL

 ezSQL是一个非常好用的PHP数据库操作类.著名的开源博客WordPress的数据库操作就使用了ezSQL的MySQL部分.该数据库操作类支持几乎所有主流的数据库,如:PHP-PDO, mySQL, Oracle, InterBase/FireBird, PostgreSQL, SQLite以及MS-SQL等.ezSQL具有很强的调试功能,可以快速地查看SQL代码的执行情况.使用ezSQL,可以为我们节省开发时间.简化代码并提高运行效率. ezSQL的优点就不用多说了,它小巧.快速.简单.易

php实现可用于mysql,mssql,pg数据库操作类_php技巧

本文实例讲述了可用mysql,mssql,pg三种数据库的数据库操作类,你只要作任何修改就可以方便的改变你数据库的类型.分享给大家供大家参考.具体分析如下: 函数清单,索引: Open:打开数据库连接 Line:71 Close:关闭数据库连接 Line:107 SelectDB:选择数据库 Line:129 Query:创建查询 Line:151 DataSeek:移动记录指针 Line:175 FieldName:获取字段名称 Line:198 FieldType:获取字段类型 Line:2

php面象对象数据库操作类实例_php技巧

本文实例讲述了php面象对象数据库操作类.分享给大家供大家参考. 具体实现代码如下: 复制代码 代码如下: //此处构造一个数据库操作类,封装所有数据库操作 //可以扩展便于后台管理程序的使用 Class MySQLDB  {     var $host;     var $user;     var $passwd;     var $database;    var $conn;       //利用构造函数实现变量初始化     //同时连接数据库操作    function MySQLD