我正在尝试从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 /”失败[根异常是javax.naming.NameNotFoundException:jdbc :mysql:]
有人可以告诉我这是怎么回事…
您正在尝试使用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中访问它。这是一个更复杂的过程,因此这里是指向Tomcat文档中相应位置的链接,该链接说明了如何执行此操作。