教程中国
PHOTOSHOP CS9.0中文版 MAYA 8.5 FOR WINDOWS Corel Painter v9.0 Flash MX2004 中文版 Illustrator cs2 中文版
VC++6.0含sp6 中英文版 VB6.0 +sp6 简体中文版 Borland Delphi 7汉化版 MSDN for vb6.0中文版 Visual Studio 2005简体
教程中国下属 文件存储共享专家BIBIDU.COM 提供大型软件,教材,源码,电影,音乐,图书等下载 更多精品请点此进入
  您目前所在位置: 教程中国 >> Oracle >> 备份恢复 >> PHP连ORACLE的类文件 RSS订阅
PHP连ORACLE的类文件
教程(视频,书籍)下载:  ASP.NET AutoCAD 数据库 C# ASP java photoshop 网页设计 delphi 3dmax Flash C++ VB 张孝祥 实例   更多请进入BIBIDU搜索
IT搜索引擎   

  putenv("ORACLE_SID=oracle8");
  putenv("ORACLE_HOME=/oracle/product/release/8.1.5");
  
  class db_sql {
  var $Debug = 0;
  var $sqoe = 1; // sqoe= show query on error
  
  var $Database = "dev";
  var $User = "scott";
  var $Password = "tiger";
  
  var $Link_ID = 0;
  var $Record = array();
  var $Row;
  var $numRow;
  var $Parse;
  var $Error = "";
  
  function connect() {
  if ( 0 == $this->Link_ID ) {
   if($this->Debug) {
   printf("
Connecting to $this->Database...
\n");
   }
   $this->Link_ID=OCILogon("$this->User","$this->Password");
  
   if (!$this->Link_ID) {
   $this->halt("Link-ID == false " .
   "($this->Link_ID), OCILogon failed");
   }
  
   if($this->Debug) {
   printf("
Obtained the Link_ID: $this->Link_ID
\n");
   }
   }
   }
  
   function query($Query_String) {
   if($Query_String=="")
   {
   echo "执行语句不能为空!";
   return false;
   }
   $this->connect();
  
   $this->Parse=OCIParse($this->Link_ID,$Query_String);
  
   if(!$this->Parse) {
   $this->Error=OCIError($this->Parse);
   } else { OCIExecute($this->Parse);
   $this->Error=OCIError($this->Parse);
   }
  
   $this->Row=0;
  
   if($this->Debug) {
   printf("Debug: query = %s
\n", $Query_String);
   }
  
   if ($this->Error["code"]!=1403 && $this->Error["code"]!=0 && $this->sqoe)
   echo "
  ".$this->Error["message"]."
  Query :\"$Query_String\"";
   $numRow=OCIRowCount($this->Parse);
   return $this->Parse;
  
   }
  
   function next_record() {
   if(0 == OCIFetchInto($this->Parse,$result,OCI_ASSOC+OCI_RETURN_NULLS)) {
   if ($this->Debug) {
   printf("
ID: %d,Rows: %d
\n",
   $this->Link_ID,$this->num_rows());
   }
   $this->Row +=1;
  
   $errno=OCIError($this->Parse);
   if(1403 == $errno) { # 1043 means no more records found
   $this->Error="";
   $this->disconnect();
   $stat=0;
   } else {
   $this->Error=OCIError($this->Parse);
   if($this->Debug) {
   printf("
Error: %s",
   $this->Error["message"]);
   }
   $stat=0;
   }
   } else {
   for($ix=1;$ix<=OCINumcols($this->Parse);$ix++) {
   $col=strtoupper(OCIColumnname($this->Parse,$ix));
   $colreturn=strtolower($col);
   $this->Record[ "$colreturn" ] = $result["$col"];
   if($this->Debug) echo"[$col]:".$result["$col"]."
\n";
   }
   $stat=1;
   }
  
   return $stat;
   }
   function record_exist() {
   if(0 == OCIFetchInto($this->Parse,$result)) {
   return 0;
   } else {
   return 1;
   }
  
   return $stat;
   }
  
   function seek($pos) {
   $this->Row=$pos;
   }
  
   function metadata($table,$full=false) {
   $count = 0;
   $id = 0;
   $res = array();
  
   /*
   * Due to compatibility problems with Table we changed the behavior
   * of metadata();
   * depending on $full, metadata returns the following values:
   *
   * - full is false (default):
   * $result[]:
   * [0]["table"] table name
   * [0]["name"] field name
   * [0]["type"] field type
   * [0]["len"] field length
   * [0]["flags"] field flags ("NOT NULL", "INDEX")
   * [0]["format"] precision and scale of number (eg. "10,2") or empty
   * [0]["index"] name of index (if has one)
   * [0]["chars"] number of chars (if any char-type)
   *
   * - full is true
   * $result[]:
   * ["num_fields"] number of metadata records
   * [0]["table"] table name
   * [0]["name"] field name
   * [0]["type"] field type
   * [0]["len"] field length
   * [0]["flags"] field flags ("NOT NULL", "INDEX")
   * [0]["format"] precision and scale of number (eg. "10,2") or empty
   * [0]["index"] name of index (if has one)
   * [0]["chars"] number of chars (if any char-type)
   * ["meta"][field name] index of field named "field name"
   * The last one is used, if you have a field name, but no index.
   * Test: if (isset($result['meta']['myfield'])) {} ...
   */
  
   $this->connect();
  
   ## This is a RIGHT OUTER JOIN: "(+)", if you want to see, what
   ## this query results try the following:
   ## $table = new Table; $db = new my_DB_Sql; # you have to make
   ## # your own class
   ## $table->show_results($db->query(see query vvvvvv))
   ##
   $this->query("SELECT T.table_name,T.column_name,T.data_type,".
   "T.data_length,T.data_precision,T.data_scale,T.nullable,".
   "T.char_col_decl_length,I.index_name".
   " FROM ALL_TAB_COLUMNS T,ALL_IND_COLUMNS I".
   " WHERE T.column_name=I.column_name (+)".
   " AND T.table_name=I.table_name (+)".
   " AND T.table_name=UPPER('$table') ORDER BY T.column_id");
  
   $i=0;
   while ($this->next_record()) {
   $res[$i]["table"] = $this->Record[table_name];
   $res[$i]["name"] = strtolower($this->Record[column_name]);
   $res[$i]["type"] = $this->Record[data_type];
   $res[$i]["len"] = $this->Record[data_length];
   if ($this->Record[index_name]) $res[$i]["flags"] = "INDEX ";
   $res[$i]["flags"] .= ( $this->Record[nullable] == 'N') ? '' : 'NOT NULL';
   $res[$i]["format"]= (int)$this->Record[data_precision].",".
   (int)$this->Record[data_scale];
   if ("0,0"==$res[$i]["format"]) $res[$i]["format"]='';
   $res[$i]["index"] = $this->Record[index_name];
   $res[$i]["chars"] = $this->Record[char_col_decl_length];
   if ($full) {
   $j=$res[$i]["name"];
   $res["meta"][$j] = $i;
   $res["meta"][strtoupper($j)] = $i;
   }
   if ($full) $res["meta"][$res[$i]["name"]] = $i;
   $i++;
   }
   if ($full) $res["num_fields"]=$i;
  # $this->disconnect();
   return $res;
   }
  
  
   function affected_rows() {
   return OCIRowCount($this->Parse);
   }
  
   function num_rows() {
   $iii=0;
   while ($this->next_record()) {
   $iii++;
   }
   OCIExecute($this->Parse);
   return $iii

来源:upschool.com.cn
作者:
关键字:类文件
发表日期:2007-1-6 0:44:52

网页显示有限 阅读全文请下载本文完整版WORD文档

上一篇:Running Oracle JSP on Apache   下一篇:JSP连ORACLE的类文件


2008-12-2 6:45:56
本文的相类似文章
  • JSP连ORACLE的类文件
  • 用C++ 产生 SQL*Loader 各类文件
  • ASP在线升级类文件
  • 如何在Java程序中运行外部类文件
  • C++产生SQL*Loader各类文件
  • 当你的Studio.NET出现Automation Server Cannot Create Object时,禁止添加页面及类文件时的解决方案~~
  • 使用javap深入查看类文件
  • ASP在线升级类文件
  • 在学习中进步 在进步中成长 教程中国相随您的成长之路
    华腾联合科技股份有限公司版权所有
    广告联系:Rosibo@163.com