Re: [INTERFACES] [Fwd: postgresql JDBC driver question] - Mailing list pgsql-interfaces
From | Murad Nayal |
---|---|
Subject | Re: [INTERFACES] [Fwd: postgresql JDBC driver question] |
Date | |
Msg-id | 36380316.6A43FF15@godel.bioc.columbia.edu Whole thread Raw |
In response to | Re: [INTERFACES] [Fwd: postgresql JDBC driver question] (Peter T Mount <peter@retep.org.uk>) |
List | pgsql-interfaces |
Peter T Mount wrote: > On Wed, 28 Oct 1998, Murad Nayal wrote: > > > > I am baffled: > > > > > > I wrote a small java program to test postgresql jdbc driver. the applet > > > runs fine locally using applet viewer. indicating that the driver is > > > recognizing the url and responding to it correctly. however I get the > > > message "NO suitable Driver" when the applet is run from a remote > > > browser. the Class.forName("postgresql.Driver"); does not produce an > > > exception leading me to believe that the Driver is found but it is not > > > accepting the url (same one that worked locally)? > > Ok, applets can be horrible little things, and sometimes it's not their > fault. Nine times out of ten it's the sandbox (applet security), or a > browser not handling java 1.1 or jdbc (some don't know about jdbc :-( ) > > Your code looks ok. I placed your URL into an application here, and all I > got was: > > Connection failed: java.net.UnknownHostException: godel.bioc.columbia.edu > > which is ok, as I wasn't connected at the time ;-) > > > > <Applet code="JDBCtest.class" archive=postgresql.jar width=300 > > > height=300> </Applet> > > As far as I can see, your problem is here. > > First, don't put .class in the code argument. It can break some browsers. > Technically it's the class name that goes here, not the file name. > > The main problem is the archive argument. The browser is loading the > postgresql.jar file, looking for the JDBCtest class. It fails, so it then > looks at the directory that the html file is in. It find's JDBCtest, but > as it's not in the jar file, some browsers implementations of the > "Sandbox" prevents the driver to be found. > > There are two solutions: > > extract the files from postgresql.jar into your html directory > > or > > create a new jar file containing the contents of postgresql.jar > and your applet. > > Remember: it's important to keep the directory structure. Thank you for your suggestions. I followed your directions by unzipping the jar file in the html directory, removed the archive attribute from the <applet> tag and remove the class extension from the code attribute in the applet tag. Now netscape produces: user authentication failed exception while internet explorer produces No suitable driver exception. Mind you, the connection works just fine if you do it using the appletviewer locally on the machine. I am including next a copy of the html and the java files with just the user password obsecured (you have to trust me it does work :-)). thanks indeed for any suggestions and help URL: http://godel.bioc.columbia.edu/~secourse/JDBCtest.html JDBCtest.html: <html> <head> <title>Java Database Connectivity Test</title> </head> <body> Enter one of the following company symbols: SGI, CCI, CMB. A bit of a small database I know. <Applet code="JDBCtest" width=300 height=300> </Applet> </html> JDBCtest.java import java.sql.*; import java.awt.*; import java.applet.*; import java.awt.event.*; import java.util.*; public class JDBCtest extends Applet implements ActionListener { String url = "jdbc:postgresql://godel.bioc.columbia.edu:1212/stockprices"; String usr = "murad"; String pwd = "*******"; Connection con; Statement stmt; ResultSet res; static final String DOIT = "GETPRICE"; TextField price; TextField symbol; TextField stat; Label thesymbol; Label theprice; Button doit; public void init() { try { Class.forName("postgresql.Driver"); System.out.println("After class loading"); con = DriverManager.getConnection(url, usr, pwd); System.out.println("After connection"); stmt = con.createStatement(); } catch (Exception e) { System.out.println("Just caught an exception"); System.out.println(e.getMessage()); e.printStackTrace(); } price = new TextField(20); price.setEditable(false); stat = new TextField(20); stat.setEditable(false); symbol = new TextField(20); thesymbol = new Label("Stock symbol"); theprice = new Label("Stock price"); doit = new Button("Get price"); doit.addActionListener(this); doit.setActionCommand(DOIT); setLayout(new GridLayout(3,2)); add(thesymbol); add(symbol); add(theprice); add(price); add(doit); add(stat); validate(); } public void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); if(command == DOIT) { String query; float stockprice=0; String secsym = symbol.getText(); stat.setText("Contacting database. please wait"); try { query = "Select price FROM stockinfo WHERE symbol = \'"; query += secsym + "\';"; res = stmt.executeQuery(query); while(res.next()) { stockprice = res.getFloat("price"); } price.setText(String.valueOf(stockprice)); stat.setText("Updated price"); } catch (Exception ee) { System.out.println("Just caught an exception"); System.out.println(ee.getMessage()); ee.printStackTrace(); } } } public void destroy() { try { stmt.close(); con.close(); } catch (Exception ee) { System.out.println("Just caught an exception"); System.out.println(ee.getMessage()); ee.printStackTrace(); } } } -- Murad Nayal M.D. Ph.D. Department of Biochemistry and Molecular Biophysics College of Physicians and Surgeons of Columbia University 630 West 168th Street. New York, NY 10032 Tel: 212-305-6884 Fax: 212-305-6926
pgsql-interfaces by date: