运行 Web 应用程序后,我尝试连接 mysql 数据库,出现如下错误: HTTP 状态 500 - 内部服务器错误 类型异常报告 消息内部服务器错误 描述 服务器遇到内部错误,无法满足此请求。 异常(exception) javax.servlet.ServletException:com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:用户''@'localhost'对数据库'mysqluser = root'的访问被拒绝
根本原因
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:用户''@'localhost'对数据库'mysqluser=root'的访问被拒绝
note GlassFish Server 开源版 4.0 日志中提供了异常的完整堆栈跟踪及其根本原因。 GlassFish Server 开源版 4.0
我的 JSP 代码是:
`<%@ page import ="java.sql.*" %>
<%<br/>
String fname = request.getParameter("fname");
`String lname = request.getParameter("lname");
`String email = request.getParameter("email");
`String user = request.getParameter("uname");
`String pwd = request.getParameter("pass");
Class.forName("com.mysql.jdbc.Driver");
连接 con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql"+ "user=root");
语句 st = con.createStatement();
`int i = st.executeUpdate("insert into members(first_name, last_name,email, uname, pass) values ('" + fname + "','" + lname + "','" + email + "','" + user + "','" + pwd + "')");
`if (i > 0)
`{
`out.print("Registration Successfull!"+"<ahref='index.jsp'>Go to Login</a>");
`}
`else {
`response.sendRedirect("index.jsp");
}
%>
`
我的数据库没有任何密码。 我通过以下步骤在 netbeans 中建立连接: 第 1 步:服务选项卡 第 2 步:右键单击“数据库”并选择“新建连接...” 步骤 3:按照步骤操作。 测试连接成功然后完成。 我使用的是 Linux Fedora 20 操作系统
最佳答案
声明Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql"+ "user=root");
是错误的,因为:
url
的串联与 "user=root"
将产生字符串:jdbc:mysql://localhost:3306/mysqluser=root
这绝对是错误的。在网址中,您缺少数据库名称(如果是 mysql,那么您在命名它时会遇到问题,我建议您更改数据库名称)。
解决方案:
分别为 url、用户和密码定义变量(即使未设置密码,也必须将其作为空字符串提供)。请参阅以下代码:
String url="jdbc:mysql://localhost:3306/databaseName";
String user="root";
String password="";
Connection conn = DriverManager.getConnection(url, user, password);
希望有帮助。
附言在 jsp 中编写数据库逻辑不是一个好主意。最好将数据库管理的代码外部化到其他类中,并使用它来获取相应的连接。
P.P.S。在使用完数据库资源后,不要忘记管理它们(我指的是关闭 Connection、PreparedStatement、ResultSet 的 finally block ),以释放已使用的资源并避免内存泄漏。最好编写一个单独的方法,该方法接受这些参数并检查它们是否为 null,如果条件为 true,则将关闭相应的资源。
关于java - jsp中无法连接mysql数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32326226/