使用 Applet 连接数据库 解决方案.....

03-05-09 cute

最近,用Applet 即时显示 网站流量统计.但我知道,先前不作任何的处理Applet是不工作的(应为他要连接数据库).所以我用 policytool 工具生成安全策略,使得Applet能够访问本地资源(并给他所有权限).最终生成一个文件:

ser.policy

------------------------------------------------------------

/* AUTOMATICALLY GENERATED ON Sat May 10 09:25:36 CST 2003*/

/* DO NOT EDIT */

grant codeBase "file:/f:/ytiic/Stat/*" {

permission java.security.AllPermission;

};

-------------------------------------------------------------

然后进行授权:(当然,先编译此类)

Appletviewer -J-Djava.security.policy=c.policy analyse.java

执行完后,出现一个小窗口.代表运行成功.可是却出现了一个问题,

数据库驱动程序,无法加载!!!!!!!

环境变量已经设置好,先前做了一个小程序,已连接成功.......

[ 可是Applet怎么无法加载驱动程序呢???? ]

请高手指点...........

------------------------------------------------------------

原程序:

-----------------

import java.awt.*;

import java.applet.*;

import java.sql.*;

/*

<applet code="analyse" width=300 height=80>

</applet>

*/

public class analyse extends Applet implements Runnable

{

private ResultSet rs=null;

private PreparedStatement ps=null;

private Statement st=null;

private Connection con=null;

private Thread t=null;

String msg="A Simple Moving Bananer ";

boolean stopFlag;

public void init()

{

this.setBackground(Color.ORANGE); //定义背景颜色

this.setForeground(Color.red); //定义前景颜色

try{

Class.forName("dm.jdbc.driver.DmDriver").newInstance(); //加载驱动程序

con=DriverManager.getConnection("jdbc:dm://10.40.14.3","admin","admin");

}catch(Exception e){

msg=e.toString();

destroy();

}

}

public void paint(Graphics g) //此方法用于显示输出

{

try{

st = con.createStatement();

rs=st.executeQuery("select * from tb_language");

if(rs.next()){

g.drawString("ok",50,50);

}

rs.close();

st.close();

}catch(Exception e){}

g.drawString(msg,50,50);

}

//当浏览器不访问此页时,stop()方法将被调用

public void stop(){

stopFlag=true;

t=null;

}

//最后释放所用的资源

public void destroy(){

try{

if(con!=null){

con.close();

con=null;

}

}catch(SQLException e){}

finally{

try{

if(con!=null)

con.close();

}catch(SQLException ee){}

}

}

}

1