Java/JavaWeb 连接数据库完成增删改查

6 篇文章 13 订阅

在这里插入图片描述
🍖🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖
🍖🍖
🍖🍖🍖
🍖🍖🍖🍖 作者 : 不良使
🍖🍖🍖🍖🍖 潜力创作新星 华为云享专家
🍖🍖🍖🍖🍖🍖 博客记录学习的思路,项目和错误,寻找志同道合的朋友
🍖🍖🍖🍖🍖🍖🍖 如果觉得有帮助记得一键三连 ┗|`O′|┛ 嗷~~
🍖🍖🍖🍖🍖🍖🍖🍖

🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖

连接数据库无非就是和数据库建立连接,和前面的python连接数据库差不多。


首先在连接Java数据库的时候需要数据库的jar包,这点不同于python连接数据库
mysql的jar包

下面让我们来看看数据库是如何让连接的,是如何完成数据库的一系列操作,增删改查等…


💖Java连接数据库。

🎶1、注册驱动

Class.forName("com.mysql.jdbc.Driver");

🎶2、获取连接

  conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/shop", "root", "123456");

注意:获取连接很重要,数据的一点点错误都会导致你连接不上数据库。
😃1、localhost代表本机不用变
😃2、3306是端口号,即port,一般默认都是3306。
😃3、root一般指管理员,不用变,直接用即可。
😃4、"123456"指的是密码,一般大家常用的密码就123、111111、root或者123456几种。


🎶3、获取数据库操作对象

stmt = conn.createStatement();

🎶4、//执行sql

 String sql = "select id,name,num,price from testmodel_car";
            rs = stmt.executeQuery(sql);
            while (rs.next()) {
                String id = rs.getString("id");
                String name = rs.getString("name");
                String num = rs.getString("num");
                String price = rs.getString("price");
                System.out.println(id + "," + name + "," + num + "," + price);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {

注意:
😃1、java"select id,name,num,price from testmodel_car";从表 testmodel_car中查询 id,name,num,price四列数据
😃2、rs = stmt.executeQuery(sql);获取的对象编译一下sql语句
😃3、String id = rs.getString("id");取出id那一列的值赋值给id(String id 中的id可以随便换,只要不和其他变量冲突都是可以的)


🎶5、释放资源

       if (rs != null) {
                try {
                    rs.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

不释放资源也行,在上面抛出异常也可以解决


🎶6、完整代码

import com.mysql.jdbc.Driver;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class Test2 {
    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            //注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //获取连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/shop", "root", "123456");
            //获取数据库操作对象
            stmt = conn.createStatement();
            //执行sql
            String sql = "select id,name,num,price from testmodel_car";
            rs = stmt.executeQuery(sql);
            while (rs.next()) {
                String id = rs.getString("id");
                String name = rs.getString("name");
                String num = rs.getString("num");
                String price = rs.getString("price");
                System.out.println(id + "," + name + "," + num + "," + price);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //释放资源
            if (rs != null) {
                try {
                    rs.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}


💖连接数据库------增加操作

add.jsp

<%--
  Created by IntelliJ IDEA.
  User: 17331
  Date: 2022/3/5
  Time: 15:40
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link href="h/favicon2.ico" rel="icon" type="image/x-icon"/>
    <title>添加信息</title>
    <style>
        body {
            background-color:#FDF5E6;
        }
    </style>
    <style>
        body {
            width: 100%;
            height: 100%;
            background: url('./img/olypic.jpg');
            background-repeat: no-repeat;
            background-size: 100% 100%;
            background-attachment: fixed;
        }
    </style>
    <style>
        input{
            width: 20%;
            padding: 12px 20px;
            margin: 8px 0;
            box-sizing: border-box;
            border: 1px solid #555;
            outline: none;
        }

        input:focus {
            background-color: lightblue;
        }
    </style>
    <style>
        #boxshadow {
            position: relative;
            -moz-box-shadow: 1px 2px 4px rgba(0, 0, 0,0.5);
            -webkit-box-shadow: 1px 2px 4px rgba(0, 0, 0, .5);
            box-shadow: 1px 2px 4px rgba(0, 0, 0, .5);
            padding: 10px;
            background:#F0F8FF;
            border-radius:8px;
        }

        /* Make the image fit the box */
        #boxshadow img {
            width: 50%;
            border: 0px solid #8a4419;
            border-style: inset;
        }

        #boxshadow::after {
            content: '';
            position: absolute;
            z-index: -1; /* hide shadow behind image */
            -webkit-box-shadow: 0 15px 20px rgba(0, 0, 0, 0.3);
            -moz-box-shadow: 0 15px 20px rgba(0, 0, 0, 0.3);
            box-shadow: 0 15px 20px rgba(0, 0, 0, 0.3);
            width: 70%;
            left: 15%; /* one half of the remaining 30% */
            height: 100px;
            bottom: 0;
        }
    </style>
    <style>
        .button {
            background-color:#337AB7; /* Green */
            border: none;
            color: white;
            padding: 16px 32px;
            text-align: center;
            text-decoration: none;
            display: inline-block;
            font-size: 16px;
            margin: 4px 2px;
            -webkit-transition-duration: 0.4s; /* Safari */
            transition-duration: 0.4s;
            cursor: pointer;
        }

        .button1 {
            background-color: white;
            color: black;
            border: 2px solid #337AB7;
        }
        .button1:hover {
            background-color: #337AB7;
            color: white;
            box-shadow: 0 12px 16px 0 rgba(0,0,0,0.24),0 17px 50px 0 rgba(0,0,0,0.19);
        }
    </style>

</head>
<body>

<div style="padding:2px;width:1080px;height:470px;margin-top:10%;margin-left:20%;opacity: 0.8" id="boxshadow">
    <div>
        <img src="img/olypic.jpg"   style="float:left;margin-top:5%;">
    </div>
    <div style="float:right;">
        <form action="add" method="post">
            <p style="margin-right:200px;">
                国家名称&nbsp&nbsp&nbsp<input type="text"  name="Country"  style="border-radius:8px;width:150px;height:30px;">
            </p>
            <p>
                &nbsp&nbsp金牌数&nbsp&nbsp&nbsp&nbsp&nbsp<input type="text" name="Glod_num" style="border-radius:8px;width:150px;height:30px;margin-top:1%">
            </p>

            <p>
                &nbsp&nbsp银牌数&nbsp&nbsp&nbsp&nbsp&nbsp<input type="text" name="Silver_num" style="border-radius:8px;width:150px;height:30px;margin-top:1%">
            </p>
            <p>
                &nbsp&nbsp铜牌数&nbsp&nbsp&nbsp&nbsp&nbsp<input type="text" name="Copper_num" style="border-radius:8px;width:150px;height:30px;margin-top:1%">
            </p>
            <p>
                &nbsp&nbsp&nbsp&nbsp&nbspid&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<input type="text" name="id" style="border-radius:8px;width:150px;height:30px;margin-top:1%">
            </p>
            <input type="submit" value="保存"/><br/>
        </form>
        </form>
    </div>
</div>
</body>
</html>

Add.java

package com.bjpowernode.javaweb.servlet;

import com.bjpowernode.javaweb.utils.DButil;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.*;


@WebServlet(name = "add", value = "/add")
public class Add extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");
        //获取信息,前端页面注册的信息
        String country=request.getParameter("Country");
//        String logo=request.getParameter("logo");
        String Glod_num=request.getParameter("Glod_num");
        String Silver_num=request.getParameter("Silver_num");
        String Copper_num=request.getParameter("Copper_num");
        String id =request.getParameter("id");
//        String Sum=request.getParameter("Sum");
        //连接数据库,执行insert插入语句
        Connection conn = null;
        PreparedStatement ps = null;
        int count=0;
        try {
            //注册驱动
            try {
                Class.forName("com.mysql.jdbc.Driver");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            //获取连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mofa", "root", "123456");

            // TODO 2、开启事务   默认开启  我们将它关闭()自动提交机制关闭
            String sql = "insert ignore into medals_table(Country,Glod_num,Silver_num,Copper_num,id) values (?,?,?,?,?);";
            ps = conn.prepareStatement(sql);
            ps.setString(1, country);
//            ps.setString(2, logo);
            ps.setString(2, Glod_num);
            ps.setString(3, Silver_num);
            ps.setString(4, Copper_num);
            ps.setString(5, id);
//            ps.setString(7, Sum);
            //返回一个值,指的是  影响了数据库中多少条记录  主要是判断是否大于0  就是是否印象数据库
            count = ps.executeUpdate();
        }catch (SQLException e){
            e.printStackTrace();
        }finally {
            DButil.close(conn,ps,null);
        }
        if(count==1){
            //增加成功   任然跳到列表页面
            request.getRequestDispatcher("Take_01").forward(request,response);
        }
        else{
            //删除失败
            request.getRequestDispatcher("error.jsp").forward(request,response);
        }
    }
}

在这里插入图片描述
增加功能就是通过前端jsp文件text填写数据,然后通过submit提交数据,传递给后端servlet,也就是上面的Add,注意Java文件不要小写,我就没少挨骂

步骤:
😘1前端jsp文件text写入通过submit提交
😘2<form action="add" method="post">通过form表单提交给后端的servel(Add)
😘3String country=request.getParameter("Country");通过getParameter取到前端的值然后赋值给country,为后面刷数据做准备
😘
4
后端servlet访问数据库,步骤访问上面第一个标题《Java连接数据库》
😘5成功将前端传来的数据刷如数据库



💖连接数据库------删除操作

package com.bjpowernode.javaweb.servlet;

import com.bjpowernode.javaweb.utils.DButil;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;

@WebServlet(name = "delete", value = "/delete")
public class Delete extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        //根据部门编号删除部门
        //获取部门编号
        String country = request.getParameter("name");
        //连接数据库
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        int count=0;
        try {
            //注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //获取连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mofa", "root", "123456");
            // TODO 2、开启事务   默认开启  我们将它关闭()自动提交机制关闭
            conn.setAutoCommit(false);
            String sql = "delete from medals_table where Country=?";
            ps = conn.prepareStatement(sql);
            ps.setString(1,country);
            //返回一个值,指的是  影响了数据库中多少条记录  主要是判断是否大于0  就是是否印象数据库
            count= ps.executeUpdate();
            //事务提交
            conn.commit();

        } catch (SQLException e) {
            if(conn!=null){
                try {
                    conn.rollback();
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
            }
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        finally {
            DButil.close(conn,ps,null);
        }
        if(count==1){
            PrintWriter out = response.getWriter();
            out.println("<script>");
            out.println("alert('Dear, the deletion is unrecoverable. Are you sure you deleted it?');");
            out.println("location.href='Take_01'");//跳转到用户列表页面
            out.println("</script>");
//            //删除成功   任然跳到列表页面
//            request.getRequestDispatcher("Take_01").forward(request,response);

        }
        else{
            //删除失败
            request.getRequestDispatcher("error.jsp").forward(request,response);
        }
    }
}

String country = request.getParameter("name");老规矩,前端取值进行操作


💖连接数据库------修改操作

edit.jsp

<%--
  Created by IntelliJ IDEA.
  User: 17331
  Date: 2022/3/6
  Time: 17:39
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title><%@ page contentType="text/html;charset=UTF-8" language="java" %>
        <html>
        <head>
        <title>新增</title>
</head>
<body>
<h1>新增国家奖牌信息</h1>
<hr color="red" width="100%">
<form action="edit" method="post">
    国家名称 :<input type='text' name='Country' value='"+country+"'/><br/>
<%--    logo :<input type='text' name='logo' value='"+logo+"'/><br/>--%>
    金牌数 :<input type='text' name='Glod_num' value='"+Glod+"'/><br/>
    银牌数 :<input type='text' name='Silver_num' value='"+Silver+"'/><br/>
    铜牌数 :<input type='text' name='Copper_num' value='"+Copper+"'/><br/>
    id  : <input type='text' name='Sum' value='"+sum+"'/><br/>
    总数 : <input type='text' name='id' value='"+id+"'/><br/>
    <input type="submit" value="保存"/><br/>
</form>
</body>
</html>

Edit.java

package com.bjpowernode.javaweb.servlet;

import com.bjpowernode.javaweb.utils.DButil;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;

@WebServlet(name = "edit",value = "/edit")
public class Edit extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String contextPath = request.getContextPath();
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");
        PrintWriter out =response.getWriter();
        //jsp文档
        out.println("<html lang='en'>");
        out.println("<head>");
        out.println("    <meta charset='UTF-8'>");
        out.println("    <link href='h/favicon2.ico' rel='icon' type='image/x-icon'/>");
        out.println("    <title>添加信息</title>");
        out.println("    <style>");
        out.println("                body {");
        out.println("            background-color:#FDF5E6;");
        out.println("        }");
        out.println("    </style>");
        out.println("    <style>");
        out.println("                body {");
        out.println("            width: 100%;");
        out.println("            height: 100%;");
        out.println("            background: url('./img/olypic.jpg');");
        out.println("            background-repeat: no-repeat;");
        out.println("            background-size: 100% 100%;");
        out.println("            background-attachment: fixed;");
        out.println("        }");
        out.println("    </style>");
        out.println("    <style>");
        out.println("                input{");
        out.println("            width: 20%;");
        out.println("            padding: 12px 20px;");
        out.println("            margin: 8px 0;");
        out.println("            box-sizing: border-box;");
        out.println("            border: 1px solid #555;");
        out.println("            outline: none;");
        out.println("        }");
        out.println("");
        out.println("        input:focus {");
        out.println("            background-color: lightblue;");
        out.println("        }");
        out.println("    </style>");
        out.println("    <style>");
        out.println("        #boxshadow {");
        out.println("            position: relative;");
        out.println("            -moz-box-shadow: 1px 2px 4px rgba(0, 0, 0,0.5);");
        out.println("            -webkit-box-shadow: 1px 2px 4px rgba(0, 0, 0, .5);");
        out.println("            box-shadow: 1px 2px 4px rgba(0, 0, 0, .5);");
        out.println("            padding: 10px;");
        out.println("            background:#F0F8FF;");
        out.println("            border-radius:8px;");
        out.println("        }");
        out.println("");
        out.println("        /* Make the image fit the box */");
        out.println("        #boxshadow img {");
        out.println("            width: 50%;");
        out.println("            border: 0px solid #8a4419;");
        out.println("            border-style: inset;");
        out.println("        }");
        out.println("");
        out.println("        #boxshadow::after {");
        out.println("            content: '';");
        out.println("            position: absolute;");
        out.println("            z-index: -1; /* hide shadow behind image */");
        out.println("            -webkit-box-shadow: 0 15px 20px rgba(0, 0, 0, 0.3);");
        out.println("            -moz-box-shadow: 0 15px 20px rgba(0, 0, 0, 0.3);");
        out.println("            box-shadow: 0 15px 20px rgba(0, 0, 0, 0.3);");
        out.println("            width: 70%;");
        out.println("            left: 15%; /* one half of the remaining 30% */");
        out.println("            height: 100px;");
        out.println("            bottom: 0;");
        out.println("        }");
        out.println("    </style>");
        out.println("    <style>");
        out.println("       .button {");
        out.println("            background-color:#337AB7; /* Green */");
        out.println("            border: none;");
        out.println("            color: white;");
        out.println("            padding: 16px 32px;");
        out.println("            text-align: center;");
        out.println("            text-decoration: none;");
        out.println("            display: inline-block;");
        out.println("            font-size: 16px;");
        out.println("            margin: 4px 2px;");
        out.println("            -webkit-transition-duration: 0.4s; /* Safari */");
        out.println("            transition-duration: 0.4s;");
        out.println("            cursor: pointer;");
        out.println("        }");
        out.println("");
        out.println("       .button1 {");
        out.println("            background-color: white;");
        out.println("            color: black;");
        out.println("            border: 2px solid #337AB7;");
        out.println("        }");
        out.println("       .button1:hover {");
        out.println("            background-color: #337AB7;");
        out.println("            color: white;");
        out.println("            box-shadow: 0 12px 16px 0 rgba(0,0,0,0.24),0 17px 50px 0 rgba(0,0,0,0.19);");
        out.println("        }");
        out.println("    </style>");
        out.println("");
        out.println("</head>");
        out.println("<body>");
        out.println("");
        out.println("<div style='padding:2px;width:1080px;height:470px;margin-top:10%;margin-left:20%;opacity: 0.8' id='boxshadow'>");
        out.println("    <div>");
        out.println("        <img src='img/olypic.jpg'   style='float:left;margin-top:5%;'>");
        out.println("    </div>");
        out.println("    <div style='float:right;'>");
        out.println("		<form action='"+contextPath+"/update' method='post'>");




        //获取国家名称
        String country=request.getParameter("name");
        //连接数据库
        Connection conn=null;
        PreparedStatement ps=null;
        ResultSet rs=null;
        try {
            try {
                Class.forName("com.mysql.jdbc.Driver");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            //获取连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mofa", "root", "123456");
            String sql = "select * from medals_table where Country=?";
            //编译sql语句
            ps = conn.prepareStatement(sql);
            //赋值    第一个问好赋值 country   国家名称
            ps.setString(1, country);
            //查询返回结果集    这个结果集只有一条记录  ,国家名称是主键  ,  故只有一条数据
            rs = ps.executeQuery();
            if(rs.next()){
                String logo=rs.getString("logo");
                String Glod = rs.getString("Glod_num");
                String Silver = rs.getString("Silver_num");
                String Copper = rs.getString("Copper_num");
                String sum=rs.getString("Sum");
                String id=rs.getString("id");
                System.out.println("你好,你好,你好,齐天大圣!!!");
                //输出动态网页
                out.println("<p style='margin-right:200px;'>");
                out.println("                        国家名称&nbsp&nbsp&nbsp<input type='text'  name='Country'  value='"+country+"' style='border-radius:8px;width:150px;height:30px;'>");
                out.println("            </p>");
//                out.println("            <p>");
//                out.println("                        &nbsp&nbsp&nbsplogo&nbsp&nbsp&nbsp&nbsp&nbsp <input type='text' name='logo' value='"+logo+"' style='border-radius:8px;width:150px;height:30px;margin-top:1%'>");
//                out.println("            </p>");
                out.println("            <p>");
                out.println("                        &nbsp&nbsp金牌数&nbsp&nbsp&nbsp&nbsp&nbsp<input type='text' name='Glod_num' value='"+Glod+"' style='border-radius:8px;width:150px;height:30px;margin-top:1%'>");
                out.println("            </p>");
                out.println("");
                out.println("            <p>");
                out.println("                        &nbsp&nbsp银牌数&nbsp&nbsp&nbsp&nbsp&nbsp<input type='text' name='Silver_num' value='"+Silver+"' style='border-radius:8px;width:150px;height:30px;margin-top:1%'>");
                out.println("            </p>");
                out.println("            <p>");
                out.println("                        &nbsp&nbsp铜牌数&nbsp&nbsp&nbsp&nbsp&nbsp<input type='text' name='Copper_num' value='"+Copper+"' style='border-radius:8px;width:150px;height:30px;margin-top:1%'>");
                out.println("            </p>");
                out.println("            <p>");
                out.println("                        &nbsp&nbsp&nbsp&nbsp&nbspid&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<input type='text' name='id' value='"+id+"' style='border-radius:8px;width:150px;height:30px;margin-top:1%'>");
                out.println("            </p>");

            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            DButil.close(conn,ps,rs);
        }
        out.println("            <input type='submit' value='保存'/><br/>");
out.println("      </form>");
out.println("     </form>");
out.println("  </div>");
out.println("</div>");
out.println("</body>");
out.println("</html>");

    }
}

Update.java

package com.bjpowernode.javaweb.servlet;

import com.bjpowernode.javaweb.utils.DButil;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.*;

@WebServlet(name = "update",value = "/update")
public class Update extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");
        //解决中文乱码问题
        String country=request.getParameter("Country");
        String logo=request.getParameter("logo");
        String Glod_num=request.getParameter("Glod_num");
        String Silver_num=request.getParameter("Silver_num");
        String Copper_num=request.getParameter("Copper_num");
        String id=request.getParameter("id");
        //连接数据库执行更新操作
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        int count=0;
        try {
            try {
                Class.forName("com.mysql.jdbc.Driver");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            //获取连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mofa", "root", "123456");
            String sql = "update medals_table set Glod_num=?,Silver_num=?,Copper_num=?,id=? where Country=?";
            //编译sql语句
            ps = conn.prepareStatement(sql);
//            ps.setString(1, logo);
            ps.setString(1, Glod_num);
            ps.setString(2, Silver_num);
            ps.setString(3, Copper_num);
            ps.setString(4, id);
            ps.setString(5, country);
//            System.out.println(logo);
            count=ps.executeUpdate();
            System.out.println(count);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DButil.close(conn, ps, rs);
        }
        if(count==1){
            //更新成功
            request.getRequestDispatcher("Take_01").forward(request,response);
        }else{
            //更新失败
            request.getRequestDispatcher("error.jsp").forward(request,response);
        }
    }
}

💋1、前端传输数据给后端edit,edit通过getParameter取到前端值完成后面的操作。
💋2、为了让修改的时候可以显示修改前的值,我们在Edit.java中写入前端代码。
💋3、Edit.jav中代码通过form表单把数据传输给Update.java。
💋4、Update.java通过getParameter取到由Edit.java中传来的值。
💋5、把取到的值存进数据库,完成刷入操作。

注意:我这里有个bug,就是不能修改国家名称,因为手贱的我为了让数据库看着好看就把国家名设置为主键了,,,,,,,



💖连接数据库------查询操作

Select.java

package com.bjpowernode.javaweb.servlet;

import com.bipowernode.pojo.Olypic;
import com.bjpowernode.javaweb.utils.DButil;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

@WebServlet(name = "select",value = "/select")
public class Select extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");
        String name = request.getParameter("select_name");
        System.out.println(name);
        //连接数据库
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        List<Olypic> olypicList=new ArrayList<>();
        try {
            Class.forName("com.mysql.jdbc.Driver");
            //获取连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mofa", "root", "123456");
            String sql = "select * from medals_table where Country=?";
            //编译sql语句
            ps = conn.prepareStatement(sql);
            //赋值    第一个问好赋值 country   国家名称
            ps.setString(1, name);
            //查询返回结果集    这个结果集只有一条记录  ,国家名称是主键  ,  故只有一条数据
            rs = ps.executeQuery();
            if (rs.next()) {
                String country = rs.getString("Country");
                String Glod = rs.getString("Glod_num");
                String Silver = rs.getString("Silver_num");
                String Copper = rs.getString("Copper_num");
                String id=rs.getString("id");
                String logo=rs.getString("logo");
                System.out.println("这是数据");
                System.out.println(country);
                System.out.println("Glod");
//                   String Sum=rs.getString("Sum");
                int G = Integer.valueOf(Glod).intValue();
                int S = Integer.valueOf(Silver).intValue();
                int C = Integer.valueOf(Copper).intValue();
                int A=G+S+C;
                String Sum=String.valueOf(A);

                //将数据封装程Java对象
                Olypic olpic=new Olypic();
                olpic.setCountry(country);
                olpic.setGlod_num(Glod);
                olpic.setSilver_num(Silver);
                olpic.setCopper_num(Copper);
                olpic.setId(id);
                olpic.setSum(Sum);
                olpic.setLogo(logo);
                // TODO 将数据放入上面定义好的容器
                olypicList.add(olpic);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            DButil.close(conn, ps, rs);
        }
        request.setAttribute("olypicList",olypicList);
        request.getRequestDispatcher("./take_03.jsp").forward(request,response);
    }
}

可以从前端或者后端传值,完成搜索操作。但是一般是要通过前端搜索框输入值,通过form表单传走,后端通过getParameter取值完成一些列操作。


现在的项目都是通过框架,但是 了解传输和运行机制还是十分重要的。

最后介绍一下牛客。Leetcode有的刷题牛客都有,除此之外牛客里面还有招聘(社招和校招)、一些上岸大厂的大佬的面试经验。 牛客是可以伴随一生的编程软件(完全免费),从学校到社会工作,时时刻刻你都可以用到感兴趣的可以去注册试试可以伴随一生的刷题app

完整的JavaWeb项目







觉得有用的可以给个三连,关注一波!!!带你了解更多的Java小知识

  • 149
    点赞
  • 796
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 110
    评论
### 回答1: JavaWeb连接数据库实现增删改查,需要使用Java语言编写代码,通过JDBC驱动连接数据库,使用SQL语句实现对数据库的操作。 具体步骤如下: 1. 导入JDBC驱动包,可以使用Maven或手动导入。 2. 在Java代码中使用JDBC驱动连接数据库,获取数据库连接对象。 3. 使用SQL语句实现对数据库的增删改查操作,可以使用PreparedStatement或Statement对象执行SQL语句。 4. 执行SQL语句后,可以通过ResultSet对象获取查询结果。 5. 最后,关闭数据库连接对象和ResultSet对象。 需要注意的是,JavaWeb连接数据库时,需要配置数据库连接信息,包括数据库URL、用户名、密码等。同时,为了防止SQL注入攻击,需要使用PreparedStatement对象预编译SQL语句,避免直接拼接SQL语句。 ### 回答2: JavaWeb连接数据库实现增删改查是Web开发中非常常见的任务,它涉及到Java连接数据库,编写SQL语句,以及将数据渲染到用户界面的流程。下面是实现增删改查的基本步骤: 一、连接数据库 连接数据库主要是通过JDBC来完成,需要导入相应的JDBC驱动包。在代码中可以使用以下语句来连接数据库: 1. 加载JDBC驱动 ```java Class.forName("com.mysql.jdbc.Driver"); ``` 2. 建立数据库连接 ```java String url = "jdbc:mysql://localhost:3306/test"; String username = "root"; String password = "root"; Connection conn = DriverManager.getConnection(url, username, password); ``` 其中url是数据库的地址,username和password是连接数据库时的凭证,根据实际情况进行设置。 二、增加数据 实现添加数据功能需要使用SQL的INSERT语句,示例代码如下: ```java String sql = "INSERT INTO user(name, age, address) VALUES(?, ?, ?)"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, "张三"); pstmt.setInt(2, 20); pstmt.setString(3, "北京"); pstmt.executeUpdate(); ``` 通过PreparedStatement类实现对数据库的操作,其中?是占位符,表示实际值在执行代码时指定,这样可以避免SQL注入的风险。 三、删除数据 实现删除数据功能需要使用SQL的DELETE语句,示例代码如下: ```java String sql = "DELETE FROM user WHERE id = ?"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setInt(1, 1); pstmt.executeUpdate(); ``` 同样使用PreparedStatement类实现对数据库的操作,表示删除ID为1的数据。 四、修改数据 实现修改数据功能需要使用SQL的UPDATE语句,示例代码如下: ```java String sql = "UPDATE user SET name = ?, age = ?, address = ? WHERE id = ?"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, "李四"); pstmt.setInt(2, 30); pstmt.setString(3, "上海"); pstmt.setInt(4, 2); pstmt.executeUpdate(); ``` 同样使用PreparedStatement类实现对数据库的操作,表示将ID为2的数据的信息修改为新的信息。 五、查询数据 实现查询数据功能需要使用SQL的SELECT语句,示例代码如下: ```java String sql = "SELECT * FROM user"; Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); int age = rs.getInt("age"); String address = rs.getString("address"); System.out.println(id + "\t" + name + "\t" + age + "\t" + address); } ``` 通过ResultSet类进行查询结果集的操作,遍历结果集中的每一行数据,并输出到控制台。 六、关闭数据库连接 通过在finally语句块中调用关闭连接的方法来关闭连接,防止数据库连接过多,导致系统崩溃,代码如下: ```java if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } ``` 以上就是使用JavaWeb连接数据库实现增删改查的基本步骤,通过这些基础操作可以实现复杂的业务逻辑,完成Web应用程序的开发。 ### 回答3: JavaWeb是一种基于Java语言的Web开发框架,与数据库连接实现增删改查JavaWeb开发常见的业务需求之一。以下是实现步骤: 1. 导入jdbc驱动包,使用反射技术加载jdbc驱动类。 2. 配置数据库连接参数,包括数据库的url、用户名、密码等。 3. 使用jdbc提供的API创建连接对象,连接数据库。 4. 获取一个Statement执行对象,通过Statement对象执行SQL语句,实现增、删、改、查等操作。 5. 关闭连接和Statement对象,释放相应的资源。 在具体实现过程中,还需要考虑如何防止SQL注入攻击,这可以通过使用PreparedStatement对象来解决。下面是一个示例代码,展示如何使用JavaWeb连接数据库实现增删改查。 1. 导入jdbc驱动包 在项目源代码目录下的lib文件夹中添加对应版本的jdbc驱动包。 2. 加载jdbc驱动类 ```java Class.forName("com.mysql.jdbc.Driver"); //加载MySQL驱动类 ``` 3. 配置数据库连接参数 ```java String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC"; String user = "root"; String password = "123456"; ``` 4. 创建连接对象 ```java Connection conn = DriverManager.getConnection(url, user, password); ``` 5. 创建Statement执行对象 ```java Statement stmt = conn.createStatement(); ``` 6. 实现增、删、改、查操作 ```java //增 String insertSql = "insert into user (name, age) values ('张三', 20)"; stmt.executeUpdate(insertSql); //删 String deleteSql = "delete from user where name='张三'"; stmt.executeUpdate(deleteSql); //改 String updateSql = "update user set age=21 where name='张三'"; stmt.executeUpdate(updateSql); //查 String selectSql = "select * from user"; ResultSet rs = stmt.executeQuery(selectSql); while(rs.next()){ System.out.println(rs.getString("name") + " " + rs.getInt("age")); } ``` 7. 关闭连接和Statement对象 ```java rs.close(); stmt.close(); conn.close(); ``` 综上,通过以上步骤就可以实现JavaWeb连接数据库实现增删改查的操作。在实际项目开发中,需要更加细致、全面地处理异常和错误,保证项目的安全性和稳定性。
评论 110
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不良使

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值