java使用tomcat时,如何加载JDBC驱动程序?
我正在使用Eclipse和Tomcat7。我对这两种产品和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);
}
现在它成功了。我认为在Java1.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();
}
}
我正在使用Java1.7
# 1 楼答案
我在这里可能是错的,但在您的第二个代码示例connectionURL中
不包括“create=true”;来完成这个陈述。在您的完整代码示例中,它被包括在内,但被注释掉了
# 2 楼答案
我无法解释原因,但我是这样做的:
Class.forName("...Driver");
李>我知道这与其说是一个清晰的解释,不如说是一条经验法则,但我在课堂加载方面的知识不允许我给出更好的答案
# 3 楼答案
您的Derby驱动程序不支持JDBC4自动加载,因此您必须手动执行。尝试查找更为最新的版本