【发布时间】:2014-11-13 17:41:32
【问题描述】:
我正在使用 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
【问题讨论】:
-
驱动程序自动加载是在 Java 6 (JDBC 4) 中引入的,而不是 Java 1.4。
-
但是您使用的任何版本的 Derby 都支持驱动程序检测模型吗?
-
我使用的是不久前下载的 10.10.1.1。我认为它应该支持驱动程序检测。我在非网络环境中使用它,我不必显式加载驱动程序。
-
我正在使用不久前下载的 db-derby 10.10.1.1。所以我认为它应该支持驱动程序检测。我在非网络环境中使用它,我不必显式加载驱动程序。
-
似乎是一个合理的问题。我给出了所有代码并清楚地解释了我的问题。那么为什么它是-1。这是为了阻止人们提问吗?