I am trying to make JDBC access using JavaScript using Rhino included in Java 6. But I can not get DriverManager find the Driver that I want to use.
These two examples should be equivalent:
Java:
public class DbTest { public static void main(String[] argv) { java.sql.Connection c = null; try { java.lang.Class.forName("net.sourceforge.jtds.jdbc.Driver"); c = java.sql.DriverManager.getConnection( "jdbc:jtds:sqlserver://myserver/mydb", "user", "password"); } catch (Exception e) { c = null; System.out.println(e); }; if(c != null) { System.out.println("yay, got c!"); try { c.close(); } catch(Exception e) {} } else { System.out.println("awww."); } } }
JavaScript:
importPackage(Packages.net.sourceforge.jtds.jdbc); java.lang.Class.forName('net.sourceforge.jtds.jdbc.Driver'); var c = null; try { c = java.sql.DriverManager.getConnection( 'jdbc:jtds:sqlserver://myserver/mydb', 'user', 'password'); } catch (e) { c = null; println(e); }; if(c) { println('yay, got c!'); c.close(); } else { println('awww.'); }
... but when I run them, I get the following:
Java:
> java -cp .;jtds-1.2.5.jar DbTest java.sql.SQLException: Unknown server host name 'myserver'. awww.
Great, he managed to load the driver and tried to resolve the server.
JavaScript:
> jrunscript -cp .;jtds-1.2.5.jar dbtest.js script error in file dbtest.js : sun.org.mozilla.javascript.internal.WrappedException: Wrapped java.lang.ClassNotFoundException: net.sourceforge.jtds.jdbc.Driver (dbtest.js#2) in dbtest.js at line number 2
Why doesn't he find a class? I tried with and without importPackage() and importClass() with and without the Packages prefix. If I comment forName , then DriverManager will not find a suitable driver.
source share