MySQL的MySQL连接错误

时间:2010-01-03 10:58:23

标签: java jsp jdbc

我正在尝试从jsp页面连接到mysql数据库。该 连接代码如下

   InitialContext ic=new InitialContext();
   DataSource ds=(DataSource)ic.lookup("jdbc:mysql://localhost:3306/");
   Connection con=ds.getConnection();
    Statement stmt = con.createStatement();

当我打开页面时,我收到以下错误  javax.servlet.ServletException:javax.naming.NamingException:查找 SerialContext中的'jdbc:mysql:// localhost:3306 /'失败[Root 异常是javax.naming.NameNotFoundException:jdbc:mysql:]

有人可以告诉我这有什么问题......

2 个答案:

答案 0 :(得分:3)

您正在尝试使用JNDI查找持久连接。 JNDI用于存储和访问servlet容器中的资源,但是您使用的是JDBC连接字符串而不是JNDI引用。

如果您想通过页面中的JDBC直接连接到数据库,您需要类似以下内容来获取连接。

       Connection conn = null;

       try {
           String userName = "myuser";
           String password = "mypassword";
           String url = "jdbc:mysql://localhost:3306/mydb";
           Class.forName ("com.mysql.jdbc.Driver").newInstance ();
           conn = DriverManager.getConnection (url, userName, password);
       } catch (Exception e) {
           System.err.println ("Cannot connect to database server");
       }

另一方面,如果您想使用JNDI,则需要先在JNDI中存储连接,然后通过您用来存储它的名称在JSP中访问它。这是一个更复杂的过程,所以这里有一个link to the appropriate place in the Tomcat documentation解释了如何做到这一点。

答案 1 :(得分:1)

最简单的情况是:

Class.forName(driverClass);
Connection connection = DriverManager.getConnection(
     "jdbc:mysql://localhost:3306/", userName, password);

如果要使用容器定义的连接池,并且使用的是tomcat,请查看this page

作为旁注,我不建议从.jsp连接到数据库。为此使用servlet。 JSP是一种表示技术,不应该在其中包含数据库连接逻辑。