java - jsp中无法连接mysql数据库

标签 java mysql jsp

运行 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/

相关文章:

java - 用户工作目录 : XP vs Vista

java - 如何找到使用 FileOutputStream 创建的文件的路径

java - 编译器错误 : array required, 但找到字符串

mysql - 加密 MySQL 中的每个值是否有意义?

java - jsp中的分页

html - 如何在基于 Ajax 的网站和基本 HTML 网站之间轻松切换?

java - 在 Java 中读取私有(private)加密 key

php - 通过 PHP 从 MySQL 数据库中提取不同的单一值

java - Spring isUserInRole 不使用 MySQL DB 中的角色

java - jsp和servlet的独立数据库连接方法