Mega Code Archive

 
Categories / Java / Swing JFC
 

JDBC applet

/* From http://java.sun.com/docs/books/tutorial/index.html */ /*  * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.  *  * Redistribution and use in source and binary forms, with or without  * modification, are permitted provided that the following conditions are met:  *  * -Redistribution of source code must retain the above copyright notice, this  *  list of conditions and the following disclaimer.  *  * -Redistribution in binary form must reproduce the above copyright notice,  *  this list of conditions and the following disclaimer in the documentation  *  and/or other materials provided with the distribution.  *  * Neither the name of Sun Microsystems, Inc. or the names of contributors may  * be used to endorse or promote products derived from this software without  * specific prior written permission.  *  * This software is provided "AS IS," without a warranty of any kind. ALL  * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING  * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE  * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MIDROSYSTEMS, INC. ("SUN")  * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE  * AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS  * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST  * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,  * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY  * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,  * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.  *  * You acknowledge that this software is not designed, licensed or intended  * for use in the design, construction, operation or maintenance of any  * nuclear facility.  */ /**  * 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.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Vector; 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: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);     }   }   /**    * 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 e = queryResults.elements();     while (e.hasMoreElements()) {       String text = (String) e.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();   } }