亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? adodb-db2.inc.php

?? 這是一個(gè)嵌入式linux系統(tǒng)下的命令工具包
?? PHP
?? 第 1 頁 / 共 2 頁
字號(hào):
<?php
/* 
  V4.80 8 Mar 2006  (c) 2006 John Lim (jlim@natsoft.com.my). All rights reserved.

This is a version of the ADODB driver for DB2.  It uses the 'ibm_db2' PECL extension for PHP
  (http://pecl.php.net/package/ibm_db2), which in turn requires DB2 V8.2.2.

  Tested with PHP 5.1.1 and Apache 2.0.55 on Windows XP SP2.

  This file was ported from "adodb-odbc.inc.php" by Larry Menard, "larry.menard@rogers.com".
  I ripped out what I believed to be a lot of redundant or obsolete code, but there are
  probably still some remnants of the ODBC support in this file; I'm relying on reviewers
  of this code to point out any other things that can be removed.
*/

// security - hide paths
if (!defined('ADODB_DIR')) die();

  define("_ADODB_DB2_LAYER", 2 );
	 
/*--------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------*/


class ADODB_db2 extends ADOConnection {
	var $databaseType = "db2";	
	var $fmtDate = "'Y-m-d'";
	var $fmtTimeStamp = "'Y-m-d, h:i:sA'";
	var $replaceQuote = "''"; // string to use to replace quotes
	var $dataProvider = "db2";
	var $hasAffectedRows = true;

	var $binmode = DB2_BINARY;

	var $useFetchArray = false; // setting this to true will make array elements in FETCH_ASSOC mode case-sensitive
								// breaking backward-compat
	var $_bindInputArray = false;	
	var $_genSeqSQL = "create table %s (id integer)";
	var $_autocommit = true;
	var $_haserrorfunctions = true;
	var $_lastAffectedRows = 0;
	var $uCaseTables = true; // for meta* functions, uppercase table names
	
	function ADODB_db2() 
	{ 	
		$this->_haserrorfunctions = ADODB_PHPVER >= 0x4050;
	}
	
		// returns true or false
	function _connect($argDSN, $argUsername, $argPassword, $argDatabasename)
	{
		global $php_errormsg;
		
		if (!function_exists('db2_connect')) {
			ADOConnection::outp("Warning: The old ODBC based DB2 driver has been renamed 'odbc_db2'. This ADOdb driver calls PHP's native db2 extension.");
			return null;
		}
		// This needs to be set before the connect().
		// Replaces the odbc_binmode() call that was in Execute()
		ini_set('ibm_db2.binmode', $this->binmode);

		if ($argDatabasename) {
			$this->_connectionID = db2_connect($argDatabasename,$argUsername,$argPassword);
		} else {
			$this->_connectionID = db2_connect($argDSN,$argUsername,$argPassword);
		}
		if (isset($php_errormsg)) $php_errormsg = '';

		// For db2_connect(), there is an optional 4th arg.  If present, it must be
		// an array of valid options.  So far, we don't use them.

		$this->_errorMsg = isset($php_errormsg) ? $php_errormsg : '';
		if (isset($this->connectStmt)) $this->Execute($this->connectStmt);
		
		return $this->_connectionID != false;
	}
	
	// returns true or false
	function _pconnect($argDSN, $argUsername, $argPassword, $argDatabasename)
	{
		global $php_errormsg;
	
		if (!function_exists('db2_connect')) return null;
		
		// This needs to be set before the connect().
		// Replaces the odbc_binmode() call that was in Execute()
		ini_set('ibm_db2.binmode', $this->binmode);

		if (isset($php_errormsg)) $php_errormsg = '';
		$this->_errorMsg = isset($php_errormsg) ? $php_errormsg : '';
		
		if ($argDatabasename) {
			$this->_connectionID = db2_pconnect($argDatabasename,$argUsername,$argPassword);
		} else {
			$this->_connectionID = db2_pconnect($argDSN,$argUsername,$argPassword);
		}
		if (isset($php_errormsg)) $php_errormsg = '';

		$this->_errorMsg = isset($php_errormsg) ? $php_errormsg : '';
		if ($this->_connectionID && $this->autoRollback) @db2_rollback($this->_connectionID);
		if (isset($this->connectStmt)) $this->Execute($this->connectStmt);
		
		return $this->_connectionID != false;
	}

	
	function ServerInfo()
	{
	
		if (!empty($this->host) && ADODB_PHPVER >= 0x4300) {
			$dsn = strtoupper($this->host);
			$first = true;
			$found = false;
			
			if (!function_exists('db2_data_source')) return false;
			
			while(true) {
				
				$rez = @db2_data_source($this->_connectionID,
					$first ? SQL_FETCH_FIRST : SQL_FETCH_NEXT);
				$first = false;
				if (!is_array($rez)) break;
				if (strtoupper($rez['server']) == $dsn) {
					$found = true;
					break;
				}
			} 
			if (!$found) return ADOConnection::ServerInfo();
			if (!isset($rez['version'])) $rez['version'] = '';
			return $rez;
		} else {
			return ADOConnection::ServerInfo();
		}
	}

	
	function CreateSequence($seqname='adodbseq',$start=1)
	{
		if (empty($this->_genSeqSQL)) return false;
		$ok = $this->Execute(sprintf($this->_genSeqSQL,$seqname));
		if (!$ok) return false;
		$start -= 1;
		return $this->Execute("insert into $seqname values($start)");
	}
	
	var $_dropSeqSQL = 'drop table %s';
	function DropSequence($seqname)
	{
		if (empty($this->_dropSeqSQL)) return false;
		return $this->Execute(sprintf($this->_dropSeqSQL,$seqname));
	}
	
	/*
		This algorithm is not very efficient, but works even if table locking
		is not available.
		
		Will return false if unable to generate an ID after $MAXLOOPS attempts.
	*/
	function GenID($seq='adodbseq',$start=1)
	{	
		// if you have to modify the parameter below, your database is overloaded,
		// or you need to implement generation of id's yourself!
		$MAXLOOPS = 100;
		while (--$MAXLOOPS>=0) {
			$num = $this->GetOne("select id from $seq");
			if ($num === false) {
				$this->Execute(sprintf($this->_genSeqSQL ,$seq));	
				$start -= 1;
				$num = '0';
				$ok = $this->Execute("insert into $seq values($start)");
				if (!$ok) return false;
			} 
			$this->Execute("update $seq set id=id+1 where id=$num");
			
			if ($this->affected_rows() > 0) {
				$num += 1;
				$this->genID = $num;
				return $num;
			}
		}
		if ($fn = $this->raiseErrorFn) {
			$fn($this->databaseType,'GENID',-32000,"Unable to generate unique id after $MAXLOOPS attempts",$seq,$num);
		}
		return false;
	}


	function ErrorMsg()
	{
		if ($this->_haserrorfunctions) {
			if ($this->_errorMsg !== false) return $this->_errorMsg;
			if (empty($this->_connectionID)) return @db2_errormsg();
			return @db2_errormsg($this->_connectionID);
		} else return ADOConnection::ErrorMsg();
	}
	
	function ErrorNo()
	{
		
		if ($this->_haserrorfunctions) {
			if ($this->_errorCode !== false) {
				// bug in 4.0.6, error number can be corrupted string (should be 6 digits)
				return (strlen($this->_errorCode)<=2) ? 0 : $this->_errorCode;
			}

			if (empty($this->_connectionID)) $e = @db2_error(); 
			else $e = @db2_error($this->_connectionID);
			
			 // bug in 4.0.6, error number can be corrupted string (should be 6 digits)
			 // so we check and patch
			if (strlen($e)<=2) return 0;
			return $e;
		} else return ADOConnection::ErrorNo();
	}
	
	

	function BeginTrans()
	{	
		if (!$this->hasTransactions) return false;
		if ($this->transOff) return true; 
		$this->transCnt += 1;
		$this->_autocommit = false;
		return db2_autocommit($this->_connectionID,false);
	}
	
	function CommitTrans($ok=true) 
	{ 
		if ($this->transOff) return true; 
		if (!$ok) return $this->RollbackTrans();
		if ($this->transCnt) $this->transCnt -= 1;
		$this->_autocommit = true;
		$ret = db2_commit($this->_connectionID);
		db2_autocommit($this->_connectionID,true);
		return $ret;
	}
	
	function RollbackTrans()
	{
		if ($this->transOff) return true; 
		if ($this->transCnt) $this->transCnt -= 1;
		$this->_autocommit = true;
		$ret = db2_rollback($this->_connectionID);
		db2_autocommit($this->_connectionID,true);
		return $ret;
	}
	
	function MetaPrimaryKeys($table)
	{
	global $ADODB_FETCH_MODE;
	
		if ($this->uCaseTables) $table = strtoupper($table);
		$schema = '';
		$this->_findschema($table,$schema);

		$savem = $ADODB_FETCH_MODE;
		$ADODB_FETCH_MODE = ADODB_FETCH_NUM;
		$qid = @db2_primarykeys($this->_connectionID,'',$schema,$table);
		
		if (!$qid) {
			$ADODB_FETCH_MODE = $savem;
			return false;
		}
		$rs = new ADORecordSet_db2($qid);
		$ADODB_FETCH_MODE = $savem;
		
		if (!$rs) return false;
		
		$arr =& $rs->GetArray();
		$rs->Close();
		$arr2 = array();
		for ($i=0; $i < sizeof($arr); $i++) {
			if ($arr[$i][3]) $arr2[] = $arr[$i][3];
		}
		return $arr2;
	}
	
	
	
	function &MetaTables($ttype=false)
	{
	global $ADODB_FETCH_MODE;
	
		$savem = $ADODB_FETCH_MODE;
		$ADODB_FETCH_MODE = ADODB_FETCH_NUM;
		$qid = db2_tables($this->_connectionID);
		
		$rs = new ADORecordSet_db2($qid);
		
		$ADODB_FETCH_MODE = $savem;
		if (!$rs) {
			$false = false;
			return $false;
		}
		
		$arr =& $rs->GetArray();
		
		$rs->Close();
		$arr2 = array();
		
		if ($ttype) {
			$isview = strncmp($ttype,'V',1) === 0;
		}
		for ($i=0; $i < sizeof($arr); $i++) {
			if (!$arr[$i][2]) continue;
			$type = $arr[$i][3];
			if ($ttype) { 
				if ($isview) {
					if (strncmp($type,'V',1) === 0) $arr2[] = $arr[$i][2];
				} else if (strncmp($type,'SYS',3) !== 0) $arr2[] = $arr[$i][2];
			} else if (strncmp($type,'SYS',3) !== 0) $arr2[] = $arr[$i][2];
		}
		return $arr2;
	}
	
/*
See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/db2/htm/db2datetime_data_type_changes.asp
/ SQL data type codes /
#define	SQL_UNKNOWN_TYPE	0
#define SQL_CHAR			1
#define SQL_NUMERIC		 2
#define SQL_DECIMAL		 3
#define SQL_INTEGER		 4
#define SQL_SMALLINT		5
#define SQL_FLOAT		   6
#define SQL_REAL			7
#define SQL_DOUBLE		  8
#if (DB2VER >= 0x0300)
#define SQL_DATETIME		9
#endif
#define SQL_VARCHAR		12


/ One-parameter shortcuts for date/time data types /
#if (DB2VER >= 0x0300)
#define SQL_TYPE_DATE	  91
#define SQL_TYPE_TIME	  92
#define SQL_TYPE_TIMESTAMP 93

#define SQL_UNICODE                             (-95)
#define SQL_UNICODE_VARCHAR                     (-96)
#define SQL_UNICODE_LONGVARCHAR                 (-97)
*/
	function DB2Types($t)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品对白交换视频| 精品视频一区二区不卡| 在线观看91精品国产入口| 777久久久精品| 久久综合给合久久狠狠狠97色69| 中文字幕久久午夜不卡| 亚洲综合图片区| 久久99国产精品成人| 不卡一卡二卡三乱码免费网站 | 国产精品乱码妇女bbbb| 一区二区三区四区不卡在线| 蜜臀精品一区二区三区在线观看| 成人永久看片免费视频天堂| 7777女厕盗摄久久久| 国产精品视频一二| 石原莉奈一区二区三区在线观看| 国产一区二区中文字幕| 91官网在线观看| 久久久国产精品午夜一区ai换脸| 亚洲国产日韩av| 国产成人精品午夜视频免费| 欧美日本在线播放| 中文字幕一区二区三区不卡 | 日韩欧美一区二区三区在线| 亚洲欧美中日韩| 国产中文一区二区三区| 欧美亚洲尤物久久| 日本一区二区成人在线| 首页亚洲欧美制服丝腿| av不卡免费在线观看| 日韩精品一区在线| 亚洲成人一区二区在线观看| 99久久婷婷国产综合精品电影| 日韩美女主播在线视频一区二区三区| 亚洲女人的天堂| 国产精品一二一区| 在线不卡的av| 亚洲精品国产一区二区三区四区在线 | 午夜影院久久久| 国产又粗又猛又爽又黄91精品| 欧美性视频一区二区三区| 国产欧美综合在线观看第十页| 美女视频黄频大全不卡视频在线播放| 色噜噜狠狠色综合欧洲selulu| 国产午夜精品一区二区三区嫩草| 视频一区在线视频| 在线观看中文字幕不卡| 亚洲欧美在线aaa| 国产盗摄一区二区| 精品国产青草久久久久福利| 天天操天天色综合| 在线观看91精品国产入口| 亚洲欧洲精品一区二区精品久久久| 国产精品亚洲视频| 日韩欧美一二三| 人妖欧美一区二区| 欧美三级韩国三级日本三斤 | 欧美三级蜜桃2在线观看| 日韩美女精品在线| 成人黄色电影在线 | 91丨九色porny丨蝌蚪| 国产亚洲精品精华液| 久久91精品国产91久久小草| 日韩午夜av电影| 5858s免费视频成人| 国产精品国产精品国产专区不片| 国产美女视频91| 欧美精品一区二| 久久国产婷婷国产香蕉| 欧美一级在线观看| 秋霞成人午夜伦在线观看| 欧美精品 日韩| 视频一区在线播放| 日韩情涩欧美日韩视频| 久久国产婷婷国产香蕉| 久久综合久久鬼色| 国产盗摄一区二区| 国产精品网友自拍| 97se亚洲国产综合在线| 亚洲欧美日本韩国| 色哟哟在线观看一区二区三区| 亚洲免费观看在线视频| 91精品办公室少妇高潮对白| 亚洲国产精品一区二区www在线| 欧美日韩视频在线第一区| 亚洲777理论| 精品女同一区二区| 国产高清不卡二三区| 最近日韩中文字幕| 欧美性高清videossexo| 蜜臀av性久久久久av蜜臀妖精| 日韩精品自拍偷拍| 国产成人午夜精品5599| 国产精品久久久久久久午夜片 | 最新国产精品久久精品| 色悠久久久久综合欧美99| 午夜欧美一区二区三区在线播放| 欧美一区二区三区播放老司机| 韩国av一区二区三区| 中文字幕在线观看不卡视频| 在线观看免费亚洲| 裸体歌舞表演一区二区| 中文在线资源观看网站视频免费不卡| av一区二区久久| 亚洲精品视频观看| 欧美一区二区福利视频| 国产麻豆欧美日韩一区| 亚洲色图欧美激情| 在线播放91灌醉迷j高跟美女| 国内久久精品视频| 中文字幕中文字幕在线一区 | 男男视频亚洲欧美| 国产亚洲成aⅴ人片在线观看| 91麻豆swag| 美女视频网站久久| 亚洲天堂网中文字| 日韩三级精品电影久久久| 成人激情小说网站| 五月天中文字幕一区二区| 国产亚洲污的网站| 欧美日韩dvd在线观看| 风间由美一区二区av101| 午夜久久电影网| 国产日产欧产精品推荐色| 欧美日韩一区二区不卡| 国产福利一区二区三区视频 | 欧美一级高清片在线观看| 成人丝袜18视频在线观看| 日本v片在线高清不卡在线观看| 国产偷国产偷亚洲高清人白洁| 欧美综合色免费| 国产很黄免费观看久久| 亚洲高清免费视频| 中文字幕av一区二区三区高| 欧美精品国产精品| 91在线观看污| 激情欧美一区二区三区在线观看| 亚洲欧美日韩久久| 久久精品综合网| 在线成人免费视频| 色88888久久久久久影院野外 | 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 日韩午夜中文字幕| 欧美亚洲综合另类| 91在线视频播放| 国产精品1区二区.| 琪琪久久久久日韩精品| 亚洲一卡二卡三卡四卡无卡久久| 337p粉嫩大胆噜噜噜噜噜91av| 欧洲视频一区二区| 成人av综合在线| 国内精品伊人久久久久av影院| 日韩国产欧美三级| 亚洲一区二区三区激情| 国产精品久久久久久久久图文区| 久久在线免费观看| 欧美一级二级三级蜜桃| 欧美日韩在线观看一区二区 | 亚洲一线二线三线视频| 国产精品欧美综合在线| 国产亚洲精品精华液| 精品久久久久99| 日韩欧美国产午夜精品| 欧美日韩一区高清| 在线观看视频一区二区欧美日韩| 国产mv日韩mv欧美| 国产一区在线不卡| 久久福利资源站| 麻豆精品一区二区三区| 日韩高清在线一区| 午夜精品国产更新| 亚洲一区二区精品视频| 亚洲一区二区av电影| 亚洲小少妇裸体bbw| 亚洲欧美色综合| 亚洲欧美日韩一区| 亚洲激情男女视频| 一区二区三区四区激情| 一区二区三区小说| 亚洲一区二区三区四区五区黄 | 欧美日韩一区 二区 三区 久久精品| 99久久伊人精品| 91污在线观看| 日本韩国一区二区三区| 色噜噜狠狠色综合中国| 欧美视频第二页| 欧美日韩精品专区| 日韩一区二区精品葵司在线 | 国产一区二区三区黄视频 | 久久精品网站免费观看| 久久精品人人爽人人爽| 国产欧美日本一区视频| 亚洲欧洲国产日本综合| 亚洲精品第一国产综合野| 一区二区三区美女| 天天色综合成人网| 久久99国产精品免费| 国产91在线|亚洲| 色偷偷久久一区二区三区| 欧美三级一区二区|