无法连接到数据库(错误:`com.mysql.jdbc.Driver`)

时间:2012-06-26 10:39:54

标签: java tomcat jdbc

向大家致以问候,感谢您查看我的帖子。我试图通过使用Mysql jdbc驱动程序将我的servlet与我的数据库连接。来自mysql jdbc驱动程序的 .jar 位于 apache-tomcat-7.0.27 / lib 文件夹中。 MyServlet是一个servlet,我在必须建立连接的同一文件夹中有SQL.java。

private static Connection conn = null;
Class.forName(driver).newInstance();
conn = (Connection) 
DriverManager.getConnection("jdbc:mysql://"+"localhost:3306"+"/"+ "ergasia3", "root" , "spiros");`

不幸的是,当我尝试这样做时,我有一个错误: com.mysql.jdbc.Driver

这是我的web.xml

<web-app>
  <display-name>WebApp01</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>com.srk.pkg.MyServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/MyServlet.do</url-pattern>
  </servlet-mapping>
  <resource-ref>
    <description>database</description>
    <res-ref-name>jdbc/ergasia3</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
  </resource-ref> 
</web-app>

现在我的context.xml

<Context path="/ergasia3" docBase="ergasia3"
debug="5" reloadable="true" crossContext="true">
  <Resource name="jdbc/ergasia3" auth="Container"
  type="javax.sql.DataSource" 
  user="root" password="spiros"
  driverClassName="com.mysql.jdbc.Driver"
  url="jdbc:mysql://localhost:3306/ergasia3" 
  maxActive="15" maxIdle="3" /> 
</Context>

3 个答案:

答案 0 :(得分:1)

不要将.jar放在Tomcat的lib中,将它放在你的应用程序li​​b文件夹中。所有外部.jars应该保留在这里。

答案 1 :(得分:0)

将你的jar放在WEB-INF \ lib

答案 2 :(得分:0)

由于您已将数据库连接信息定义为tomcat中的资源而不是使用驱动程序管理器来创建连接,因此使用与以下内容类似的资源会更简单

// context used to create a datasource
Context dataSourceContext = new InitialContext();
// when you need a connection to the database
DataSource ds = (DataSource)dataSourceContext.lookup("java:comp/env/jdbc/ergasia3");
Connection conn = ds.getConnection();

此外,如前所述,Soumyadip,您应该将mysql jdbc驱动程序作为外部jar添加到Web应用程序而不是tomcat lib目录中,因为您的应用程序将查找其lib目录而不是tomcat lib目录包含mysql jdbc驱动程序的jar。如何执行此操作取决于您用于开发Web应用程序的IDE。