1

我正在尝试将 JSP 连接到数据库而不执行任何 DDL 或 DML 命令。

这是我的 JSP:

 <%@ page import="java.sql.*" %> 
 <%@ page import="java.io.*" %> 
 <html> <head> <title>Connection with mysql database</title>
 </head> 
 <body>
 <h1>Connection status</h1>
 <% 
 try {
 String connectionURL = "jdbc:mysql://localhost:3306/bharath"; 
 Connection connection = null; 
 Class.forName("com.mysql.jdbc.Driver").newInstance(); 
 connection = DriverManager.getConnection(connectionURL, "root", "root");
 if(!connection.isClosed())
 %>
 <font size="+3" color="green"></b>
 <% 
 out.println("Successfully connected to " + "MySQL server using TCP/IP...");
 connection.close();
 }
 catch(Exception ex){
 %></font>
 <font size="+3" color="red"></b>
 <%
 out.println("Unable to connect to database.");
 } 
 %>
 </font></body> </html> 

catch 块中的异常被执行。那么 try 块中可能出了什么问题。我使用默认设置安装了 MySql,用户为"root",数据库名称为"bharath".

 Exception - 
 java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:919) at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1694) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1244) at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2412) at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2445) at 
4

3 回答 3

1

代替

out.println("Unable to connect to database.");

你应该写

ex.printStackTrace(new java.io.PrintWriter(out));

将指出您的主要问题。

于 2012-10-22T19:03:26.717 回答
0

对司机没有要求newInstance()。它应该刚刚加载。

把. mysql-connector-java-x.x.x-bin.jar_ WEB-INF\lib您在连接中提供的凭据应该可以正常工作。如果它不工作,或者连接 url 中的数据库名称错误,或者端口错误,或者主机错误。

还有更好的机会从池中获得连接。查看连接池

于 2012-10-22T18:42:16.033 回答
0

请确保在类路径中添加了“com.mysql.jdbc.Driver”的 jar。

于 2012-10-22T19:24:16.837 回答