我是JSP的新手,试图将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
答案 0 :(得分:1)
而不是
out.println("Unable to connect to database.");
你应该写
ex.printStackTrace(new java.io.PrintWriter(out));
将指出您的主要问题。
答案 1 :(得分:0)
驱动程序没有必需的newInstance()
。它应该只是加载。
将mysql-connector-java-x.x.x-bin.jar
放到WEB-INF\lib
。您在连接中提供的凭据应该正常工作。如果它不起作用或者您在连接URL中输入了错误的数据库名称,或者您的端口错误或者您的主机错误。
还有一个更好的机会从池中获取连接。请看Connection Pooling。
答案 2 :(得分:0)
请确保您拥有&#34; com.mysql.jdbc.Driver&#34;的jar。添加在类路径中。