我正在尝试从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:]
有人可以告诉我这有什么问题......
答案 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是一种表示技术,不应该在其中包含数据库连接逻辑。