⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 java调用oracle数据库数据 .htm

📁 对于学习很有帮助
💻 HTM
字号:
<html>

<head>
<link REL="stylesheet" HREF="/style.css" TYPE="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>计算机世界日报:
通过DELPHI实现JAVA调用ORACLE数据库数据
</title>
<!--***********-->
</head>

<body bgcolor="#FFFFFF" >














<p><br>
<font color="#b904e8"><b><em><a href="class.htm">返回</a></em></b></font>
<center>
<font color="#0000c0"><h2>
通过DELPHI实现JAVA调用ORACLE数据库数据
</h2></font>
<h3>
大庆采油六厂采油工艺研究所
<br>王兵
</h3>
</center>
<p><font color="#ffffff">----</font>


在开发WWW网络浏览软件中,时常要用到JAVA画一些生产管理图形,而且大量的图形数据存于网络数据库ORACLE中,现在常用的方法是使用JDBC来实现对数据库的操作,但是,如果手头没有它驱动程序,则就无法对数据库进行操作。其实,我们可以使用DELPHI开发JAVA的ORACLE数据接口软件,就具体实现方法简述如下。
<p><font color="#ffffff">----</font>
<b>一、系统设置:</b>
<p><font color="#ffffff">----</font>

1. 用SQL NET 设置ORACLE数据库所在服务器的IP地址别名,这里假设名字是oracle1;
<p><font color="#ffffff">----</font>
2. 建立ORACLE ODBC数据源;
<p><font color="#ffffff">----</font>
    进入控制面板的ODBC数据源,然后点击Systen DSN,再点击Add按钮选择Microsoft ODBC Driver Oracle,在Data Source Name框中输入数据源名(test),在User Name框中输入ORACLE数据用户名(假设为user1)最后在Connect String框中输入在SQL NET中建立的ORACLE数据库别名oracle1;
<p><font color="#ffffff">----</font>
建立好以上两步后,则DELPHI的BDE Administrator中自动生成一个test数据接口,如下图:       
<p><font color="#ffffff">----</font>
<b>二、用DELPHI开发读取ORACLE数据库数据的CGI 程序</b>
<p><font color="#ffffff">----</font>

进入DELPHI编程环境,去掉FORM页及其它控件,然后输入以下程序。
<pre>
program testcgi;
{$apptype console}
uses
 SysUtils, DBtables;
  var
   Table1: TTable;//用于读ORACLE数据库数据
   Database1: TDatabase;//用于定义ORACLE别名及用户名和口令
   i,ss,code:integer;
   my,cc:string;
  begin
   writeln('CONTENT-TYPE: TEXT/HTML');//CGI程序要求的数据头信息
   writeln;//保留一行空格
  my:=paramstr(1);//读入JAVA传来的信息
  Table1:=TTable.Create(nil);//创建Table控件
  Database1:=TDatabase.Create(nil);//创建Database控件
  try
   Database1.aliasname:='test';//ORACLE别名
   Database1.databasename:='test';
   Database1.Params.Clear;
   Database1.Params.add('USER NAME=user1');//用户名
   Database1.Params.add('PASSWORD=userpassword');//口令
   Database1.loginprompt:=false;
   Database1.connected:=true;
   Database1.open; //打开数据库通道
   Table1.databasename:='test';
   Table1.tablename:='cbkt';//ORACLE表名
   table1.Active := True;
   Table1.open;//打开ORACLE表
   Table1.first;
   //计算满足条件井数
   i:=0;
   while (not table1.eof) do
     begin
       if (Table1.FieldByName('ny').asstring=my) then
        begin
          write(Table1.FieldByName('jh').asstring+',');
          val(Table1.Fields[2].asstring,ss,code);
          if ss>0 then
            write(ss*100)
          else
            write('0.0');
          write(',');
          val(Table1.Fields[3].asstring,ss,code);
          if ss >0 then
            write(ss*100)
          else
            write('0.0');
        end;
       table1.next
      end;
    finally
    table1.close;
    table1.free;
end;
end.
</pre>
<font color="#ffffff">----</font>
把以上程序编译后拷入服务器的CGI目录。
<p><font color="#ffffff">----</font>

<b>三、JAVA部分程序</b>
<pre>

//test.java  编写:王兵  1999/11/30
import java.awt.*;
import java.io.*;
import java.net.*;
import java.util.*;
import java.applet.*;
public class test extends Applet {
。。。。。。。。
。。。。。。。
。。。。。。
//调用testcgi.exe实现读入ORACLE数据
public boolean action(Event evt,Object obj)
{ String s1=(String)obj;
  if(s1=="取数据")
  return test_xx("http://10.65.76.64/scripts/testcgi.exe?"+ 
year.getSelectedItem());
  return true;
}
public boolean test_xx(String post)
  {。。。。。。。。。。。
   。。。。。。。。。。。
   try{DataInputStream is;//数据输入流
     URL url;//通过网传数据
     url=new URL(post);
     URLConnection connection=url.openConnection();//打开数据流
     is=new DataInputStream(connection.getInputStream());
	 String inputline;
     mcv.error=null;
  	 if((inputline=is.readLine())==null)//无数据
	  {mcv.error=new String("无数据可读!!!");
  	   status_field.setText("无数据可读!!!");
       mcv.repaint();//画布刷新
	   return true;
	  }
	 status_field.setText("取x,y数据...");
      if ((inputline=is.readLine())==null)
      {mcv.error=new String("无数据可读!!!");
       mcv.repaint();//画布刷新
	   return true;
	  }
      mcv.bktx=new String[10];
      mcv.bkty=new String[10];
      mcv.bktjh=new String[10];

     status_field.setText("取图形数据...");
      js=1;//计井数
      for (i=0;i< 10;i++)
	  {//每行3个字段
	   inputline=is.readLine();
	   if (inputline==null) {break;}
	   p1=inputline.indexOf(',');
	   p2=inputline.lastIndexOf(',');
	   mcv.bktjh[js]=inputline.substring(0,p1);
	   mcv.bktx[js]=inputline.substring(p1+1,p2).trim();
	   mcv.bkty[js]=inputline.substring(p2+1).trim();
       status_field.setText("bktx["+
String.valueOf(js)+"]"+mcv.bkty[js]);
       js=js+1;
      }

      is.close();
      status_field.setText("OK1");
      mcv.repaint();
	 }catch(MalformedURLException me)
{System.err.println("MalformedURLException: "+me);}
	 catch(IOException ioe){
	 System.err.println("IOException: "+ioe);
	  }catch(NumberFormatException e)
	   {if(mcv.error==null)
         mcv.error=new String("数据格式出错B!!!"+e);
        status_field.setText(mcv.error);
        mcv.repaint();
	   }
   status_field.setText("数据读完!!!");
   return true;
   
  }
}
。。。。。。。。。。。。。
。。。。。。。。。。。。


</pre>
<font color="#ffffff">----</font>

<b>四、最后在自己的起始页HTML文件中加入如下程序段就行了。</b>
<pre>

< !test.html 1999/11/30 >
< HTML >
< HEAD >
。。。。。。
。。。。。。
< BODY >
。。。。。。
< APPLET CODE="test.class" WIDTH=200 HEIGHT=40 >< /APPLET >
。。。。。。
< /BODY >
。。。。。。
。。。。。。
< /HTML >
</pre>
<font color="#ffffff">----</font>

以上程序在IBM 330 Server上调试通过,
开发环境Visual J++ 6.0。





 



<p align="right"><small><em>中国计算机世界出版服务公司版权所有</em></small> 
<br>
</p>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -