aspose file tools*
The moose likes Applets and the fly likes Applet connecting Database Error Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Applets
Bookmark "Applet connecting Database Error" Watch "Applet connecting Database Error" New topic
Author

Applet connecting Database Error

Minh Phan
Greenhorn

Joined: Sep 23, 2004
Posts: 8
When I try to connect database from applet using jdbc.odbc the following exception is thrown: "Java.secirity.AccessControlException: Access dennied (java.lang.RuntimePermission AccessClassInPackage.sun.jdbc.odbc)":

Here is the code in my applet, pls help:

/**
* This is a demonstration JDBC applet.
* It displays some simple standard output from the Coffee database.
*/

import java.applet.Applet;
import java.awt.Graphics;
import java.util.Vector;
import java.sql.*;

public class OutputApplet extends Applet implements Runnable {
private Thread worker;
private Vector queryResults;
private String message = "Initializing";

public synchronized void start() {
// Every time "start" is called we create a worker thread to
// re-evaluate the database query.
if (worker == null) {
message = "Connecting to database";
worker = new Thread(this);
worker.start();
}
}

/**
* The "run" method is called from the worker thread. Notice that
* because this method is doing potentially slow databases accesses
* we avoid making it a synchronized method.
*/

public void run() {
String url = "jdbc dbc:Test";
String query = "select COF_NAME, PRICE from COFFEES";

try {
Class.forName("sun.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,
"myLogin", "myPassword");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
String s = rs.getString("COF_NAME");
float f = rs.getFloat("PRICE");
String text = s + " " + f;
results.addElement(text);
}

stmt.close();
con.close();

setResults(results);

} catch(SQLException ex) {
setError("SQLException: " + ex);
}
}

/**
* The "paint" method is called by AWT when it wants us to
* display our current state on the screen.
*/

public synchronized void paint(Graphics g) {
// If there are no results available, display the current message.
if (queryResults == null) {
g.drawString(message, 5, 50);
return;
}

// Display the results.
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;
}
}

/**
* This private method is used to record an error message for
* later display.
*/

private synchronized void setError(String mess) {
queryResults = null;
message = mess;
worker = null;
// And ask AWT to repaint this applet.
repaint();
}

/**
* This private method is used to record the results of a query, for
* later display.
*/

private synchronized void setResults(Vector results) {
queryResults = results;
worker = null;
// And ask AWT to repaint this applet.
repaint();
}
}
Joe Ess
Bartender

Joined: Oct 29, 2001
Posts: 8997
    
    9

Frequently Asked Questions About JDBC:


3. Can the JDBC-ODBC Bridge be used with applets?

Use of the JDBC-ODBC bridge from an untrusted applet running in a browser, such as Netscape Navigator, isn't allowed. The JDBC-ODBC bridge doesn't allow untrusted code to call it for security reasons. This is good because it means that an untrusted applet that is downloaded by the browser can't circumvent Java security by calling ODBC. Remember that ODBC is native code, so once ODBC is called the Java programming language can't guarantee that a security violation won't occur. On the other hand, Pure Java JDBC drivers work well with applets. They are fully downloadable and do not require any client-side configuration.

Finally, we would like to note that it is possible to use the JDBC-ODBC bridge with applets that will be run in appletviewer since appletviewer assumes that applets are trusted. In general, it is dangerous to turn applet security off, but it may be appropriate in certain controlled situations, such as for applets that will only be used in a secure intranet environment. Remember to exercise caution if you choose this option, and use an all-Java JDBC driver whenever possible to avoid security problems.


[How To Ask Questions On JavaRanch]
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Applet connecting Database Error