使用 Applet 連線資料庫 解決方案.....

cute發表於2003-05-09
最近,用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 class="indent">

相關文章