FileDocCategorySizeDatePackage
OutputApplet.javaAPI DocExample2835Tue Dec 12 19:00:12 GMT 2000None

OutputApplet

public class OutputApplet extends Applet implements Runnable
This is a demonstration JDBC applet. It displays some simple standard output from the Coffee database.

Fields Summary
private Thread
worker
private Vector
queryResults
private String
message
Constructors Summary
Methods Summary
public synchronized voidpaint(java.awt.Graphics g)
The "paint" method is called by AWT when it wants us to display our current state on the screen.

	// 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;
	}
    
public voidrun()
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.

	String url = "jdbc:mySubprotocol:myDataSource";
	String query = "select COF_NAME, PRICE from COFFEES";
	
	try {
	    Class.forName("myDriver.ClassName");
	} 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);
	}
    
private synchronized voidsetError(java.lang.String mess)
This private method is used to record an error message for later display.

	queryResults = null;	
	message = mess;	
	worker = null;
	// And ask AWT to repaint this applet.
	repaint();
    
private synchronized voidsetResults(java.util.Vector results)
This private method is used to record the results of a query, for later display.

	queryResults = results;
	worker = null;
	// And ask AWT to repaint this applet.
	repaint();
    
public synchronized voidstart()


        
	// 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();
	}