JDBC对MySQL数据库的增删改查

    技术2022-07-10  120

    JDBC

    JDBC是Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。

    JDBC操纵数据库的基本流程

    ①加载数据库驱动

    Class.forName(driverClass)//基本语法 //加载MySql驱动 Class.forName("com.mysql.jdbc.Driver");//低版本MySQL,如5.0,6.0版本 Class.forName("com.mysql.cj.jdbc.Driver");//高版本MySQL,如8.0版本 //加载Oracle驱动 Class.forName("oracle.jdbc.driver.OracleDriver")

    ②建立与数据库的连接

    java.sql.Connection conn=DriverManager.getConnection("jdbc:mysql://主机IP:端口号/数据库名?serverTimezone=UTC","用户名","用户密码");//语法 //建立本地数据库test的连接 java.sql.Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC","root","isMySecret");

    ③发送操作语句

    //创建对象 java.sql.Statement st=con.createStatement(); //发送sql语句,203Room必须是数据库test的一个成员,结果保存在rs对象中 ResultSet rs=st.executeQuery(“select *from 203Room”);

    ④获得操作结果

    //第四步,提取结果中的数据 while(rs.next()) { System.out.println("username: "+rs.getString("username")); System.out.println("password: "+rs.getString("password")); System.out.println("realName: "+rs.getString("trueName")); System.out.println("gender: "+rs.getString("gender")); }

    ⑤关闭连接

    conn.close();

    PS/* 另外值得注意的是在Tomcat中新建的web’app项目要将驱动放在WEB-INF的lib目录录下确保程序可以找到驱动 */

    一. 增

    response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); try { String username=request.getParameter("username"); String password=request.getParameter("password"); String trueName=request.getParameter("trueName"); String gender=request.getParameter("gender"); //第一步装载驱动 Class.forName("com.mysql.cj.jdbc.Driver"); //第二步,建立连接 java.sql.Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC","root","MySQLqdl0661"); //第三步,执行sql语句 String sql="insert into 203Room(username,password,trueName,gender) values(?,?,?,?)"; //预编译,减少SQL执行时间 java.sql.PreparedStatement pst=conn.prepareStatement(sql); pst.setString(1,username); pst.setString(2,password); pst.setString(3,trueName); pst.setString(4,gender); int i = pst.executeUpdate();//执行插入 //第四步查看 response.getWriter().println("<h2>Insert sucessfully!</h2>"); response.getWriter().println("click to check<a href='simpleQueryServlet'>simpleQueryServlet</a>"); //第五步。关闭连接 conn.close(); } catch (Exception e) { e.printStackTrace(); }

    插入结果

    二. 删

    response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); try { String username=request.getParameter("username"); String password=request.getParameter("password"); //第一步装载驱动 Class.forName("com.mysql.cj.jdbc.Driver"); //第二步,建立连接 java.sql.Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC","root","MySQLqdl0661"); //第三步,执行sql语句 String sql="delete from 203Room where username = ?"; //预编译,减少SQL执行时间 java.sql.PreparedStatement pst=conn.prepareStatement(sql); pst.setString(1,username); int i = pst.executeUpdate();//执行修改 //第四步查看 response.getWriter().println("<h2>删除成功</h2>"); response.getWriter().println("click to check<a href='simpleQueryServlet'>simpleQueryServlet</a>"); //第五步。关闭连接 conn.close(); } catch (Exception e) { e.printStackTrace(); }

    删除结果

    三. 改

    代码实现

    response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); try { String username=request.getParameter("username"); String newPassword=request.getParameter("newPassword"); //第一步装载驱动 Class.forName("com.mysql.cj.jdbc.Driver"); //第二步,建立连接 java.sql.Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC","root","MySQLqdl0661"); //第三步,执行sql语句 String sql="update 203Room set password = ? where username = ?"; //预编译,减少SQL执行时间 java.sql.PreparedStatement pst=conn.prepareStatement(sql); pst.setString(1,newPassword); pst.setString(2,username); int i = pst.executeUpdate();//执行修改 //第四步查看 response.getWriter().println("<h2>Updata sucessfully!</h2>"); response.getWriter().println("click to check<a href='simpleQueryServlet'>simpleQueryServlet</a>"); //第五步。关闭连接 conn.close(); } catch (Exception e) { e.printStackTrace(); }

    修改结果

    四. 查

    1.简单查询

    try { //第一步装载驱动 Class.forName("com.mysql.cj.jdbc.Driver"); //第二步,建立连接 java.sql.Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC","root","******"); //第三步,执行sql语句 java.sql.Statement st=conn.createStatement(); String sql="select *from 203Room"; ResultSet rs=st.executeQuery(sql); //第四步,提取结果中的数据 while(rs.next()) { System.out.println("username: "+rs.getString("username")); System.out.println("password: "+rs.getString("password")); System.out.println("realName: "+rs.getString("trueName")); System.out.println("gender: "+rs.getString("gender")); } //第五步。关闭连接 conn.close(); } catch (Exception e) { e.printStackTrace(); }

    查询结果

    2.带参查询

    try { String username=request.getParameter("username"); //第一步装载驱动 Class.forName("com.mysql.cj.jdbc.Driver"); //第二步,建立连接 java.sql.Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC","root","MySQLqdl0661"); //第三步,执行sql语句 String sql="select *from 203Room where username=?"; //预编译,减少SQL执行时间 java.sql.PreparedStatement pst=conn.prepareStatement(sql); pst.setString(1,username);//设置参数1为post拿到的username ResultSet rs=pst.executeQuery();//返回username的行集合 //第四步,提取结果中的数据 while(rs.next()) { System.out.println("username: "+rs.getString("username")); System.out.println("password: "+rs.getString("password")); System.out.println("realName: "+rs.getString("trueName")); System.out.println("gender: "+rs.getString("gender")); } //第五步。关闭连接 conn.close(); } catch (Exception e) { e.printStackTrace(); }

    查询结果

    (另外贴一下数据连接池的配置方式)

    Processed: 0.009, SQL: 9