使用 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){}
}
}
} 

<p>

1