applet访问本地数据库异常。如何解决?!!!! Connection con=DriverManager.getConnection(url);//加入用户名和密码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url="jdbc:odbc:Jspdb"; Connection con=DriverManager.getConnection(url,"dba","sql"); Statement statement=con.createStatement(); String query="select * from d_user"; ResultSet rs=statement.executeQuery(query); Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加载驱动程序//建立连接Connection con=DriverManager.getConnection("jdbc:odbc:interweb","abc","123");这样写也不行,一样的错误信息。前些天还能用,今天怎么就不行了??!! 看起来好像是,密码不对了检查一下你机器上的odbc 设置呢? 我重新配的odbc,密码没错,我的数据库是access Applet對不能直接連數據庫﹐要設置本機的安全管理器 storm999(飛魚) :这怎么设啊,我以前也没设过就能访问,为什么? ie-->工具--->internet选项--->安全。本地Applet运行选项。试 一 试 啊 : wyhgg(石头) 刚试过不行,还是那个问题,是不是我的jdbc驱动坏了? 我装得是jbuilder6.0 你可在C:\Program Files\JavaSoft\JRE\lib 下建立java.policy文件﹐內容如下(這是給applet對本機操作的所有權限)grant { permission java.security.AllPermission; permission java.net.SocketPermission "*", "accept, connect, listen, resolve";}; 我記得應是這樣﹐不過我可能記錯了﹐你可以查下書<<最新 Java 2 核心技术 卷II>>中的安全安理器的內容 目錄好像應是(在我的機上,它其是在java插件的日錄下)C:\Program Files\JavaSoft\JRE\1.3.1_02\lib\security你再試一下 storm999(飛魚):谢谢你得帮忙,可是上面得程序还是不行啊,但是下面得程序就可以执行,很奇怪。为什么下面得能执行呢?还有另外一个问题,能不能用数字签名解决这个问题呢?能给点建议吗? 谢谢!-----------import java.applet.Applet;import java.awt.Graphics;import java.util.Vector;import java.sql.*;public class test extends Applet implements Runnable {private Thread worker;private Vector queryResults;private String message = "Initializing";public synchronized void start() {if (worker == null) {message = "Connecting to database";worker = new Thread(this);worker.start();}}public void run() {String url = "jdbc:odbc:interweb";String query = "select * from t_interdata";try {Class.forName("com.ms.jdbc.odbc.JdbcOdbcDriver");} catch(Exception ex) {setError("Can`t find Database driver class: " + ex);return;}try {Vector results = new Vector();Connection con = DriverManager.getConnection(url,"abc", "123");Statement stmt = con.createStatement();ResultSet rs = stmt.executeQuery(query);while (rs.next()){String s = rs.getString("bh");String text = s;results.addElement(text);}stmt.close();con.close();setResults(results);} catch(SQLException ex){setError("SQLException: " + ex);}}public synchronized void paint(Graphics g){if (queryResults == null) {g.drawString(message, 5, 50);return;}g.drawString("Prices of coffee per pound: ", 5, 10);int y = 30;java.util.Enumeration enum = queryResults.elements();while (enum.hasMoreElements()){String text = (String)enum.nextElement();g.drawString(text, 5, y);y = y + 15;}}private synchronized void setError(String mess){queryResults = null;message = mess;worker = null;repaint();}private synchronized void setResults(Vector results){queryResults = results;worker = null;repaint();}} 你說的"下面得程序就可以执行"是指不配置安全安理器就能執行還是配置了之後能執行?applet為了安全﹐對操作本地磁盤文件作出了限製﹐對JDBC也有限製﹐只有配置了本機的策略文件才能解除這些限製。我作applet時﹐作了一組件﹐使它通過服務器的Serverlet上取數據﹐這樣就不用配置本機的策略文件了。為什么第一個程序運行不了﹐你把它改為application試試 storm999(飛魚) :"下面得程序就可以执行"是指不配置安全安理器就能執行還是配置了之後能執行?"这个在之前就能执行。也是很奇怪,以前我也试过我第一个程序可以访问数据库的,没出现过异常。我现在编一个vrml和applet交互的程序,在这个 applet中我要访问数据库。所以我要用applet访问数据库。我想问一下,applet能和application通信吗?如果可以,我用application访问数据库然后把查询结果传给applet。这样可以吗?是不是就绕开安全限制了。 這我也不知道了﹐我以前用applet訪問sqlServer和oracle只要配置了安全管理都沒有問題。但我用的是jdbc連接數據庫﹐不是jdbc:odbc橋 小應用程序只能和下載它的主機進行通訊﹐如果你的web主機和數據庫主機是一台的話﹐應該可以不用配置安全管理器就能通訊。看你第一個程序的異常﹐又確實是安全管理器異常。你可以在試一下﹐用如下語句執行﹕appletviewer -J-Djava.security.policy=YourApplet.policy YourApplet.html其中YourApplet.policy文件就是我在上面提到的java.policy(我的文件是給了所有權限)﹐要帶上路徑 web主机和数据库是同一台。这语句是这样写吗appletviewer -J -Djava.security.policy=g:\jbuilder6\jdk1.3.1\jre\lib\security\java.policy e:\demo\demo.html不行啊“Exception in thread"main" java.lang.NoClassDefFoundError:”我把demo.html换成其他html也是这个错 要不换成用servlet 做连接数据库? 艾,servlet我还没弄过呢,怕时间来不及了。 【请教】关于netbeans GUI设计的问题 jni调用hashmap类时,能够传递自定义得HashMap结构 关于JPanel画图问题 请各位帮忙一下 instanceof 运算符可以用来决定某对象的类是否实现了接口??可以吗?? JAVA的包定义后建立的文件夹位置,是不是和编译器有关? 10分求解一简单问题 求书:O'Reilly.Essential CVS.chm NIO相关问题,求大神指教!!!! java如何实现对网络的监听(抓包)功能?? 新手想请教文件列表怎么实现 两个.java文件互相调用方法的问题! 请问如何把一个二维数组拷贝到另一个二维数组中??谢谢
String url="jdbc:odbc:Jspdb";
Connection con=DriverManager.getConnection(url,"dba","sql");
Statement statement=con.createStatement();
String query="select * from d_user";
ResultSet rs=statement.executeQuery(query);
//建立连接
Connection con=DriverManager.getConnection("jdbc:odbc:interweb","abc","123");这样写也不行,一样的错误信息。前些天还能用,今天怎么就不行了??!!
检查一下你机器上的odbc 设置呢?
本地Applet运行选项。
试 一 试 啊
我装得是jbuilder6.0
java.policy文件﹐內容如下(這是給applet對本機操作的所有權限)
grant {
permission java.security.AllPermission;
permission java.net.SocketPermission "*", "accept, connect, listen, resolve";
};
C:\Program Files\JavaSoft\JRE\1.3.1_02\lib\security
你再試一下
谢谢!-----------
import java.applet.Applet;
import java.awt.Graphics;
import java.util.Vector;
import java.sql.*;
public class test extends Applet implements Runnable {
private Thread worker;
private Vector queryResults;
private String message = "Initializing";
public synchronized void start() {
if (worker == null) {
message = "Connecting to database";
worker = new Thread(this);
worker.start();
}
}
public void run() {
String url = "jdbc:odbc:interweb";
String query = "select * from t_interdata";
try {
Class.forName("com.ms.jdbc.odbc.JdbcOdbcDriver");
} catch(Exception ex) {
setError("Can`t find Database driver class: " + ex);
return;
}try {
Vector results = new Vector();
Connection con = DriverManager.getConnection(url,"abc", "123");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
while (rs.next())
{
String s = rs.getString("bh");
String text = s;
results.addElement(text);
}
stmt.close();
con.close();
setResults(results);
}
catch(SQLException ex)
{
setError("SQLException: " + ex);
}
}
public synchronized void paint(Graphics g)
{
if (queryResults == null) {
g.drawString(message, 5, 50);
return;
}
g.drawString("Prices of coffee per pound: ", 5, 10);
int y = 30;
java.util.Enumeration enum = queryResults.elements();
while (enum.hasMoreElements())
{
String text = (String)enum.nextElement();
g.drawString(text, 5, y);
y = y + 15;
}
}
private synchronized void setError(String mess)
{
queryResults = null;
message = mess;
worker = null;
repaint();
}
private synchronized void setResults(Vector results)
{
queryResults = results;
worker = null;
repaint();
}
}
我想问一下,applet能和application通信吗?如果可以,我用application访问数据库然后把查询结果传给applet。这样可以吗?是不是就绕开安全限制了。
appletviewer -J-Djava.security.policy=YourApplet.policy YourApplet.html
其中YourApplet.policy文件就是我在上面提到的java.policy(我的文件是給了所有權限)﹐要帶上路徑
我把demo.html换成其他html也是这个错