在Applet中访问数据库,通过JDBC啊,在客户端安装数据库的客户端。
    这是我觉得在Applet实现队数据的访问好像没什么意义, Applet是需要下载到浏览器端的,然后再浏览器端运行,则会必然要求浏览器端好么安装你的数据库的客户端(比如OrACLE的客户端,SQLServer的客户端),另外还要建立数据的连接,基于浏览器的目的就是为了实现瘦客户,希望在客户端只需要一个浏览器,不需要在安装其他东西,什么数据库客户端啦,统统都不要装,这样就没哟任何意义了。
    如果你在Applet中直接实现对数据库的访问,那必然需要在浏览器侧的机器必须安装数据库的客户端,如果你的程序时基于Intrarnet的,只是在企业网内部运行,虽然一个个机器去安装客户端,有些麻烦,到还是可以的。假如你是基于Internet,那就不可能了,你不可能要求每个来浏览网页的客户都安装数据库客户端,另外还需要配置数据库的连接吧。显然是不可能的。
    我觉得可行的方法是WEB服务器和数据可服务器进行交互,WEB服务器取得数据后,然后将数据送到浏览器端。比较典型的方式一个是通过CGI编程,WEB服务器上的CGI进程从数据库取数据,然后HTML的方式发到浏览器端;另一种方式现在也用得很多,那就是使用ASP了。
    我个人觉得在Applet访问数据美什么意义,不过还是附上JDBC的实现,下面是一个例子,这里提供的是一个通过JDBC以TCP/IP方式访问ORACLE数据库的例子,包括直接执行SQL语句和调用存储过程两种方式:import java.sql.*;
import java.lang.*;
import java.io.*;public class JDBC_EXAMPLE {
public static void main(String args[]){
Connection connection=null;
Statement dispSTMT=null;   //用于装载执行静态的SQL语句
     CallableStatement callableSTMT=null;
         //可以调用数据库存储过程
     ResultSet result; String sQueryStr="";
String sVolLevel=""; //建立数据库连接
try{
   Class.forName("oracle.jdbc.driver.OracleDriver");
   connection = DriverManager.getConnection (
"jdbc:oracle:thin:@10.136.140.156:1521:mis",
"UserName","Password"); //数据库的用户名和口令
   //getConnection(String url,String UserName,String UserPassword)
   dispSTMT=connection.createStatement();
    }catch(Exception e){}
    
    //执行SQL语句并去取得数据集
    try {
    sQueryStr="select TO_CHAR(SYSDATE) as SD form DUAL";
      result=dispSTMT.executeQuery(sQueryStr);
      if (result.next())
        sVolLevel=result.getString("SD").trim();
    }catch(Exception e){}
    
    //执行存储过程并取得数据
    try{
      callableSTMT=(CallableStatement)con.prepareCall("{call SP_GETDYHGL(?,?,?,?,?,?,?,?)}");      callableSTMT.clearParameters();

String sInParm1,sInParm2,sInParm3,sInParm4;
String sOutParm1,sOutParm2;
float  fOutParm3,fOutParm4;

sInParm1 ="Input Parm1";
sInParm2 ="Input Parm2";
sInParm3 ="Input Parm3";
sInParm4 ="Input Parm4";      //输入参数
      callableSTMT.setString(1,sInParm1);
      callableSTMT.setString(2,sInParm2);
      callableSTMT.setString(3,sInParm3);
      callableSTMT.setString(4,sInParm4);      //注册输出参数
      callableSTMT.registerOutParameter(5,Types.VARCHAR);
      callableSTMT.registerOutParameter(6,Types.VARCHAR);
      callableSTMT.registerOutParameter(7,Types.FLOAT);
      callableSTMT.registerOutParameter(8,Types.FLOAT);      //执行存储过程
      callableSTMT.execute();      //取得输出数据
      sOutParm1   =callableSTMT.getString(5);
      sOutParm2 =callableSTMT.getString(6);
      fOutParm3   =callableSTMT.getFloat(7);
      fOutParm4   =callableSTMT.getFloat(8);
      
    }catch(Exception e){}
    
  }  
}    

解决方案 »

  1.   

    多谢FireAngel给的提示,但是小弟的上司就是要小弟
    在APPLET中实现对文件的读写操作,不知老大有什么办法吗?
      

  2.   

        我不知道你的Applet是要操作用户端的文件系统还是WEB服务器的文件系统。有一点,我想说的是Applet和Aplication能做同样的事,Applet不能访问文件系统,不是Java的限制,而是浏览器的限制,因为JAVA虚拟机在浏览器中实现,浏览器在遇到你的Applet访问文件系统是就拒绝了,所以只要浏览器允许,你就可以。
     如果单单是指访问文件系统的话,至少有两种方法实现:
        1.通过JAVA提供了文件操作的类,你在Applet也是可以使用的(如果浏览器允许的话),不过一般的浏览器中(如IE,Netscape等)都有安全措施,不允许Applet直接对本地的文件系统进行操作。除非你能像黑客那样,利用Java和浏览器的漏洞。不过如果你不是自己玩玩的话,这种方法肯定不行,因为如果用户浏览器加了针对该漏洞的补丁,你的程序就不能用了,另外,这样是违法的,肯定不能做到卖钱的程序中。对于漏洞,我也不懂。
       2.通过JNI(Java本地化方法)方法,你可以实现JNI,然后再Java中调用。但,你的Applet恐怕用这种方法也不行。当然另外有种你可以访问的,就是Cookie文件,但这是非常有限的,对于Cookie,我不懂,所以没什么好说的。