Java 无法连接jsp中的mysql数据库

Java 无法连接jsp中的mysql数据库,java,mysql,jsp,Java,Mysql,Jsp,我正在尝试在运行web应用程序后连接mysql数据库,出现如下错误: HTTP状态500-内部服务器错误 类型异常报告 消息内部服务器错误 说明服务器遇到内部错误,无法满足此请求。 例外 javax.servlet.ServletException:com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:user'@'localhost'对数据库'mysqluser=root'的访问被拒绝 根本原因 com.mysql.jdbc.exception

我正在尝试在运行web应用程序后连接mysql数据库,出现如下错误: HTTP状态500-内部服务器错误 类型异常报告 消息内部服务器错误 说明服务器遇到内部错误,无法满足此请求。 例外 javax.servlet.ServletException:com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:user'@'localhost'对数据库'mysqluser=root'的访问被拒绝

根本原因

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:拒绝用户“@'localhost”访问数据库“mysqluser=root”

请注意,GlassFish Server开源版本4.0日志中提供了异常及其根本原因的完整堆栈跟踪。 GlassFish服务器开源版本4.0

我的JSP代码是:

`<%@ page import ="java.sql.*" %>
Class.forName(“com.mysql.jdbc.Driver”);
Connection con=
DriverManager.getConnection(“jdbc:mysql://localhost:3306/mysql“+”用户=根“);
Statement st=con.createStatement()

`int i=st.executeUpdate(“插入成员(名字、姓氏、电子邮件、uname、pass)值(“+fname+”、“+lname+”、“+email+”、“+user+”、“+pwd+”)”);
`如果(i>0)
`{
`打印(“注册成功!”+);
`} 
`否则{
`sendRedirect(“index.jsp”);
}
%> `

我的数据库没有任何密码。 我通过以下步骤在netbeans中建立连接: 步骤1:服务选项卡 步骤2:右键单击数据库并选择新建连接。。。 步骤3:按照以下步骤操作。 测试连接成功,然后完成。
我正在使用linux Fedora 20操作系统

您缺少密码参数…即使您在登录时没有密码,但添加了空字符串。。。如果您正在使用语句
Connection con=DriverManager.getConnection(“jdbc:mysql://localhost:3306/mysql“+”用户=根“)错误,因为:

url
的“user=root”
连接在一起将产生字符串:
jdbc:mysql://localhost:3306/mysqluser=root
这完全是错误的。在url中,您缺少数据库名称(如果是mysql,那么您在命名时会遇到问题,我建议您更改数据库名称)

解决方案:

分别为url、用户和密码定义变量(即使未设置密码,也必须将其作为空字符串提供)。请参阅以下代码:

String url="jdbc:mysql://localhost:3306/databaseName";
String user="root";
String password="";

Connection conn = DriverManager.getConnection(url, user, password);
希望能有帮助

另外,在jsp中编写db逻辑不是一个好主意。最好将用于数据库管理的代码外部化到其他类中,并使用它获得相应的连接


p.p.S.在使用完数据库资源(我说的是一个finally块,在这里关闭连接、PreparedStatement、ResultSet)后,不要忘记管理它们,以释放已使用的资源并避免内存泄漏。最好编写一个单独的方法,接受这些参数并检查它们是否为null,如果条件为true,则相应的资源将被关闭。

一个好的开始方法是将所有业务逻辑从JSP(仅用于UI表示)移动到servlet。下一部分,因为您有一个完整的堆栈跟踪(您没有显示),这可能有助于进一步了解这个问题。在获取连接时,您不需要添加您的mysql数据库服务器的用户名和密码吗?connection con=DriverManager.getConnection(“jdbc:mysql://localhost:3306/mysql“+”user=root”)这是问题行;欢迎来到stack我知道你的回购协议不允许发表评论。但是,在进入mske时,一定要添加一些代码片段,以便更好地理解询问者,因为询问者似乎对Stackok来说也是非常新的。好的,下次我会……加入advance@sanketkaranjule如果此答案解决了您的问题,请将此答案标记为已接受。谢谢
`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");
String url="jdbc:mysql://localhost:3306/databaseName";
String user="root";
String password="";

Connection conn = DriverManager.getConnection(url, user, password);