2017-04-07 81 views
0

我正在尝试为实践设置远程Derby数据库。下面的代码工作没有问题,每当我访问我的硬盘的DB:设置远程Derby数据库:“找不到合适的驱动程序”错误

class Test{ 
    public static void main(String[] args) { 
     String protocol = "jdbc:derby:"; 
//  String dbPath = "C:/Java_Practice/derbyDB"; // this dbPath works... 
     String dbPath = "//108.167.141.127/derbyDB";  // and this one doesn't 
     String url = protocol + dbPath; 
     try(Connection conn = DriverManager.getConnection(url)) 
     { 
      System.out.println(conn); 
     } 
     catch(SQLException e){ 
      System.out.println(e.getMessage()); 
     } 
    } 
} 

我再上传整个derbyDB目录到我的HostGator的托管网站,通过ping服务器获取它的IP,并相应修改了DBPATH VAR 。代码停止工作,就好像它甚至无法看到数据库。我错过了什么?

+1

“没有找到合适的驱动程序”指的是德比类是不是在你的CLASSPATH。这里有一些文档:http://db.apache.org/derby/docs/10.13/getstart/tgs26250.html –

+0

@Bryan Pendleton事情是,当我访问位于我的硬盘上的数据库时,连接正常工作,这意味着CLASSPATH变量设置正确。不起作用的是与我上传到我的网站的同一个数据库副本的连接。我怀疑dbPath var有什么问题,因为用'xyz'等任意名称替换'derbyDB'会生成相同的SQLException ... –

+0

如果数据库位于另一台机器上,则必须在该机器上运行Derby Network Server为该机器提供客户端服务器请求。尝试通过我在之前的评论中链接到的教程工作。 –

回答

0

一些挖后回答我的问题。

这是我正式的Apache Derby文档(https://db.apache.org/derby/docs/10.0/manuals/develop/develop14.html)发现地:

您可以仅指定本地上 的JVM运行的计算机数据库。

看起来像什么,我想做到不能做......

+0

Derby 10.0手动设置已超过10年;尝试阅读当前的文档。在你放弃并断定它“无法完成”之前,也许你可以试着准确地表达你想要完成的事情。首先,Derby支持嵌入式和客户端 - 服务器配置。你试图使用哪一个? –

+0

@ Bryan Pendleton谢谢Bryan,我非常感谢你的帮助。我想要完成的只是为了即将开始的OCP考试做准备,让他有更多的模拟真实世界的实践练习,仅此而已。我使用的OCP准备指南始终指的是德比,所以选择很自然。看到它不能一蹴而就,我转而使用MySQL;一切正在如现在应该的那样工作。至于文件...老实说,我不知道它是*那*旧(页面上的时间戳说'上次发布:01/24/2013'...下次会更小心。 –

+0

不用担心很高兴你能够完成你的准备工作,如果你想在未来的某个时候再次尝试德比,我希望你能够做到。 –

1

看起来像你的驱动程序类未加载。 尝试在调用DriverManager.getConnection之前加载它,并查看它是否有效。

String driver = "org.apache.derby.jdbc.ClientDriver"; 
Class.forName(driver).newInstance(); 
String protocol = "jdbc:derby:"; 
String dbPath = "//108.167.141.127/derbyDB"+";create=true"; 
String url = protocol + dbPath; 
Connection conn = DriverManager.getConnection(url); 
+0

从Java 6(JDBC 4)开始,在普通Java应用程序中显式驱动程序加载并不是必需的,假定驱动程序符合JDBC 4并且在初始应用程序类路径上。 –

+0

是的,这是正确的。我的数据库的驱动程序*是* JDBC 4兼容。数据库本身是完全可访问的,可遍历的和可更新的 - 但只有当它存在于我的系统中时才是如此。当它很遥远 - 不行。 –

相关问题