我正在使用Eclipse和tomcat 7.我对这两种产品以及Java本身都没有什么经验。我试图从Servlet连接到derby数据库。最初,我在doGet()
中的所有内容如下:
conn = DriverManager.getConnection(connectionURL);
我将connectionURL定义为
static private String connectionURL = "jdbc:derby://localhost:1527/seconddb";
然后我将以下内容添加到构建路径和部署程序集中。
C:\DERBY\db-derby-10.10.1.1-bin\lib\derbyclient.jar
这就是我所做的一切。我有点假设Tomcat会找到驱动程序类并加载它。我收到以下错误
java.sql.SQLException: No suitable driver found for jdbc:derby://localhost:1527/seconddb
然后我继续在doGet()中添加以下代码来加载驱动程序类:
try {
Class.forName("org.apache.derby.jdbc.ClientDriver");
}
catch(ClassNotFoundException ex) {
System.out.println("Error: unable to load driver class!");
System.exit(1);
}
现在它奏效了。我认为在Java 1.4之后没有必要显式加载JDBC驱动程序类。那么我在这里做错了什么?我在下面给出了完整的代码。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Connection conn = null;
try {
Class.forName("org.apache.derby.jdbc.ClientDriver");
}
catch(ClassNotFoundException ex) {
System.out.println("Error: unable to load driver class!");
System.exit(1);
}
try {
conn = DriverManager.getConnection(connectionURL);
//DriverManager.getConnection("jdbc:derby://localhost:1527/testdb;create=true");
}
catch (SQLException e) {
e.printStackTrace();
}
PrintWriter p = response.getWriter ();
p.println("Connected to database");
try {
if (conn != null) {
conn.close();
}
}
catch (SQLException e) {
e.printStackTrace();
}
}
我正在使用java 1.7
答案 0 :(得分:0)
我无法解释原因,但这是我的方式:
Class.forName("...Driver");
。我知道这更像是一个经验法则,而不是一个明确的解释,但我在课堂上的知识并不能让我得到更好的答案...
答案 1 :(得分:0)
您的Derby驱动程序不支持JDBC 4自动加载,因此您必须手动执行此操作。尝试找到更新的版本。
答案 2 :(得分:0)
在这里我可能是错的,但是在您的第二个代码示例connectionURL
静态私有字符串连接URL =“ jdbc:derby:// localhost:1527 / seconddb”;
不包含“ create = true”;完成声明。在完整的代码示例中,该示例已包括在内,但已注释掉。