关于javaee中连接mysql数据库报错的问题

关于javaee中连接mysql数据库报错的问题


在数据库连接中,遇到如下报错代码:
java.sql.SQLException: Connections could not be acquired from the underlying database!
可能问题是选用的mysql-connector.jar包与mysql软件版本不兼容,比如我的mysql版本是5.5.60,之前由于不清楚情况在网上随便找的mysql-connector-java-8.0.11.jar包,导致出现上述问题,网上搜答案,什么导入mchange jar包、找到与mchange jar包匹配的c3p0 jar包、升级jdk、更改驱动配置都没有解决问题,最后找到原因是mysql-connector的jar包版本选用太高了,改为与mysql 5.5匹配的mysql-connector-java-5.1.48.jar后就可以正常运行了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的Java EE项目,用于连接MySQL数据库实现注册登录功能。 首先,在MySQL数据库创建一个名为“user”的表,包含以下字段:id、username、password。 然后,创建以下两个Java类:User和DBUtil。 User.java: ``` public class User { private int id; private String username; private String password; public User(int id, String username, String password) { this.id = id; this.username = username; this.password = password; } public int getId() { return id; } public String getUsername() { return username; } public String getPassword() { return password; } public void setId(int id) { this.id = id; } public void setUsername(String username) { this.username = username; } public void setPassword(String password) { this.password = password; } } ``` DBUtil.java: ``` import java.sql.*; public class DBUtil { private static final String URL = "jdbc:mysql://localhost:3306/test?useSSL=false"; private static final String USERNAME = "root"; private static final String PASSWORD = "123456"; public static Connection getConnection() { Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } return conn; } public static void close(Connection conn, PreparedStatement pstmt, ResultSet rs) { try { if (rs != null) { rs.close(); } if (pstmt != null) { pstmt.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } ``` 接下来,创建以下两个Servlet:RegisterServlet和LoginServlet。 RegisterServlet.java: ``` import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.PreparedStatement; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/register") public class RegisterServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String username = request.getParameter("username"); String password = request.getParameter("password"); Connection conn = null; PreparedStatement pstmt = null; try { conn = DBUtil.getConnection(); String sql = "INSERT INTO user(username, password) VALUES (?, ?)"; pstmt = conn.prepareStatement(sql); pstmt.setString(1, username); pstmt.setString(2, password); int result = pstmt.executeUpdate(); if (result > 0) { out.print("注册成功!"); } else { out.print("注册失败!"); } } catch (Exception e) { e.printStackTrace(); } finally { DBUtil.close(conn, pstmt, null); } } } ``` LoginServlet.java: ``` import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/login") public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String username = request.getParameter("username"); String password = request.getParameter("password"); Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = DBUtil.getConnection(); String sql = "SELECT * FROM user WHERE username = ? AND password = ?"; pstmt = conn.prepareStatement(sql); pstmt.setString(1, username); pstmt.setString(2, password); rs = pstmt.executeQuery(); if (rs.next()) { out.print("登录成功!"); } else { out.print("用户名或密码错误!"); } } catch (Exception e) { e.printStackTrace(); } finally { DBUtil.close(conn, pstmt, rs); } } } ``` 最后,在web.xml文件添加以下配置: ``` <servlet> <servlet-name>RegisterServlet</servlet-name> <servlet-class>RegisterServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>RegisterServlet</servlet-name> <url-pattern>/register</url-pattern> </servlet-mapping> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> ``` 现在,你可以在Web页面上实现注册和登录功能了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值