使用JDBC实现对数据的增删改查

为员工管理添加增加、删除和修改的功能,即在查询结果页面中提供删除、修改的操作链接,并实现在删除或修改后回到查询页面的效果。如下图所示:

步骤

step1: 添加ListEmpServlet,添加删除链接、修改链接和添加链接

代码如下:

package web;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ListEmpServlet extends HttpServlet{
    protected void service(HttpServletRequest request,
            HttpServletResponse response)
            throws ServletException,IOException{
        //保证正确读取Post提交来的中文
        request.setCharacterEncoding("utf-8");
        //保证正确输出中文
        response.setContentType("text/html;charset=utf-8");
        //获取输出流对象,并输出信息
        PrintWriter out=response.getWriter();
        //获取表单提交的数据
        //String name= request.getParameter("name");
        //double salary = Double.valueOf(request.getParameter("salary"));
        //int age = Integer.valueOf(request.getParameter("age"));
        //将数据插入到数据库t_emp表中
        Connection conn = null;
        PreparedStatement stat=null;
        try {
            //1、加载MySQL的JDBC的驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2、取得连接的URL,能访问MySQL数据库的用户名和密码
            String url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8";
            String username = "root";
            String password = "123456";
            //3、创建与MySQL数据库的连接类的实例
            conn=DriverManager.getConnection(url,username,password);
            stat=conn.prepareStatement("select * from t_emp");
            ResultSet rs = stat.executeQuery();
            //4、输出表格之前的页面标记
            out.println("<HTML>");
            out.println("<HEAD></HEAD>");
            out.println("<BODY style=‘font-size:30px‘>");
            out.println("<table border=‘1‘ cellpadding=‘0‘"+
                         "cellspacing=‘0‘ width=‘600px‘");
            out.println("<tr><caption>员工信息列表</caption></tr>");  //定义表格标题
            out.println("<tr><td>编号</td><td>姓名</td><td>薪水</td>"+
                           "<td>年龄</td><td>  操作</td></tr>");
            //3、遍历结果集,以表格形式输出数据
            while(rs.next()){
                int id=rs.getInt("id");
                String name=rs.getString("name");
                double salary=rs.getDouble("salary");
                int age=rs.getInt("age");
                out.println("<tr>");
                out.println("<td>"+id+"</td>");
                out.println("<td>"+name+"</td>");
                out.println("<td>"+salary+"</td>");
                out.println("<td>"+age+"</td>");
                out.println("<td><a href=‘delete?id="+id+"‘ "+
                        "onclick=\"return confirm(‘是否确定删除"+name+"‘);\">删除</a>");
                out.println("<a href=‘load?id="+id+"‘>修改</a></td>");
                out.println("</tr>");
            }
            out.println("</table>");
            out.println("<a href=‘addEmp.jsp‘ style=‘font-size:20px‘>>>添加员工信息</a></td>");
            out.println("</body></HTML>");
        } catch (Exception e) {
            e.printStackTrace();
            out.print("系统繁忙,稍后重试");
        }finally{
            if(stat!=null){
                try {
                    stat.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }

            }
        }
    }
}

Step2: 新建DeleteEmpServlet类,处理删除动作

获取请求参数值id,构建删除语句并执行

代码如下:

package web;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class DeleteEmpServlet extends HttpServlet{
    private static final long serialVersionUID = 1L;

    protected void service(HttpServletRequest request,
            HttpServletResponse response)
            throws ServletException,IOException{
        //保证正确读取Post提交来的中文
        request.setCharacterEncoding("utf-8");
        //保证正确输出中文
        response.setContentType("text/html;charset=utf-8");
        //获取输出流对象,并输出信息
        PrintWriter out=response.getWriter();
        //获取删除的编号
        int id =Integer.parseInt(request.getParameter("id"));
        //连接数据库,执行删除操作
        Connection conn = null;
        PreparedStatement stmt=null;
        try {
            //1、加载MySQL的JDBC的驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2、取得连接的URL,能访问MySQL数据库的用户名和密码
            String url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8";
            String username = "root";
            String password = "123456";
            //3、创建与MySQL数据库的连接类的实例
            conn=DriverManager.getConnection(url,username,password);
            stmt=conn.prepareStatement("delete from t_emp where id=?");//删除的sql语句
            stmt.setInt(1, id);
            stmt.executeUpdate();// 用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE
            response.sendRedirect("list");  //重定向到查询页面
        } catch (Exception e) {
            e.printStackTrace();
            out.print("系统繁忙,稍后重试");
        }finally{
            if(stmt!=null){
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }

            }
        }

    }
}

Step3 : 新建LoadEmpServlet.java文件

获取请求参数值id,查询数据并构建表单显示数据

代码如下:

package web;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoadEmpServlet extends HttpServlet{
    protected void service(HttpServletRequest request,
            HttpServletResponse response)
            throws ServletException,IOException{
        //保证正确读取Post提交来的中文
        request.setCharacterEncoding("utf-8");
        //保证正确输出中文
        response.setContentType("text/html;charset=utf-8");
        //获取输出流对象,并输出信息
        PrintWriter out=response.getWriter();
        //获取请求参数值id
        int id = Integer.parseInt(request.getParameter("id"));
        //根据ID查询数据库获取员工信息
        Connection conn = null;
        PreparedStatement stmt=null;
        ResultSet rs=null;
        try {
            //1、加载MySQL的JDBC的驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2、取得连接的URL,能访问MySQL数据库的用户名和密码
            String url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8";
            String username = "root";
            String password = "123456";
            //3、创建与MySQL数据库的连接类的实例
            conn=DriverManager.getConnection(url,username,password);
            stmt=conn.prepareStatement("select * from t_emp where id=?");
            stmt.setInt(1, id);
            rs=stmt.executeQuery();
            out.println("<html><head></head><body style=‘font-size:30px‘>");
            if(rs.next()){
                String name=rs.getString("name");
                double salary=rs.getDouble("salary");
                int age=rs.getInt("age");
                out.println("<form action=‘modify‘ method=‘post‘>");//输出表单
                out.println("编号:"+ id + "<br>");
                out.println("<input type=‘hidden‘ name=‘id‘ value=‘"+id+"‘/><br>");
                out.println("姓名:<input name=‘name‘ value=‘"+name+"‘/><br>");
                out.println("薪水:<input name=‘salary‘ value=‘"+salary+"‘/><br>");
                out.println("年龄:<input name=‘age‘ value=‘"+age+"‘/><br>");
                out.println("<input type=‘submit‘ value=‘修改‘/>");
                out.println("</form>");
                out.println("</body></html>");
                }
        } catch (Exception e) {
            e.printStackTrace();
            out.print("系统繁忙,稍后重试");
        }finally{
            if(stmt!=null){
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }

            }
        }

    }
}

Step4: 新建ModifyEmpServlet.java文件

修改数据表中的数据

代码如下:

package web;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ModifyEmpServlet extends HttpServlet{
    protected void service(HttpServletRequest request,
            HttpServletResponse response)
            throws ServletException,IOException{
        //保证正确读取Post提交来的中文
        request.setCharacterEncoding("utf-8");
        //保证正确输出中文
        response.setContentType("text/html;charset=utf-8");
        //获取输出流对象,并输出信息
        PrintWriter out=response.getWriter();
        //1、获取请求参数值
        int id=Integer.parseInt(request.getParameter("id"));
        String name= request.getParameter("name");
        double salary = Double.valueOf(request.getParameter("salary"));
        int age = Integer.valueOf(request.getParameter("age"));
        //2、数据库数据更新
        Connection conn = null;
        PreparedStatement stmt=null;
        try {
            //1、加载MySQL的JDBC的驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2、取得连接的URL,能访问MySQL数据库的用户名和密码
            String url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8";
            String username = "root";
            String password = "123456";
            //3、创建与MySQL数据库的连接类的实例
            conn=DriverManager.getConnection(url,username,password);
            stmt=conn.prepareStatement("update t_emp set name=?,"+
                    "salary=?,age=? where id=?"); //数据更新SQL
            stmt.setString(1, name);
            stmt.setDouble(2, salary);
            stmt.setInt(3, age);
            stmt.setInt(4, id);
            stmt.executeUpdate();
            response.sendRedirect("list");//从定向到查询界面
        } catch (Exception e) {
            e.printStackTrace();
            out.print("系统繁忙,稍后重试");
        }finally{
            if(stmt!=null){
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }

            }
        }

    }
}

Step5: 新建一个addEmp.jsp文件,实现添加员工信息操作

代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>Servlet program</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
  </head>

  <body>
    <form action="add" method="post">
        <fieldset>
            <legend>添加员工</legend>
            姓名:<input name="name"/><br>
            薪水:<input name="salary"/><br>
            年龄:<input name="age"/><br>
            <input type="submit" value="添加">
        </fieldset>
    </form>
  </body>
</html>

Step6: 修改web.xml文件实现配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
 <!-- 添加员工信息 -->
  <servlet>
    <servlet-name>addEmpServlet</servlet-name>
    <servlet-class>web.AddEmpServlet</servlet-class>
  </servlet>
  <!-- 删除员工信息 -->
  <servlet>
    <servlet-name>deleteEmpServlet</servlet-name>
    <servlet-class>web.DeleteEmpServlet</servlet-class>
  </servlet>
  <!-- 加载员工信息 -->
  <servlet>
    <servlet-name>loadEmpServlet</servlet-name>
    <servlet-class>web.LoadEmpServlet</servlet-class>
  </servlet>
   <!-- 更新员工信息 -->
  <servlet>
    <servlet-name>modifyEmpServlet</servlet-name>
    <servlet-class>web.ModifyEmpServlet</servlet-class>
  </servlet>
  <!-- 查询员工信息 -->
  <servlet>
    <servlet-name>listEmpServlet</servlet-name>
    <servlet-class>web.ListEmpServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>addEmpServlet</servlet-name>
    <url-pattern>/add</url-pattern>  <!-- 地址栏必须是addEmp.jsp,提交表单后出现在地址栏的地址 -->
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>deleteEmpServlet</servlet-name>
    <url-pattern>/delete</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>loadEmpServlet</servlet-name>
    <url-pattern>/load</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>modifyEmpServlet</servlet-name>
    <url-pattern>/modify</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>listEmpServlet</servlet-name>
    <url-pattern>/list</url-pattern>
  </servlet-mapping>
</web-app>

Step7 :加载到Tomcat服务器中,在浏览器运行

页面见第一个图。

这样,一个简单的增删改查操作就完成了。

如果发现不妥或疑问之处,麻烦提出。这段时间正在学习这方面的知识,欢迎交流。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-27 11:19:00

使用JDBC实现对数据的增删改查的相关文章

java jdbc 连接mysql数据库 实现增删改查

好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打交道非常基础的一个知识,也是比较接近底层的,在实际的工作中大家用得更多的其实还是比较成熟的框架,例如Hibernate.Mybatis. 但是作为这些成熟框架的底层的jdbc却也是我们应该去掌握的,只有了解了jdbc的增删改查,这样在以后如果有兴趣去研究Hibernate或者Mybatis的源代码的

JDBC实现最简单的增删改查

好久没写博客了,今天刚进入一家公司实习,在实习这段期间想把自己所学的东西通过博客记录下来 今天上午简单回顾了一下用JDBC实现最简单的增删改查 废话不多说,接下来就说明怎么用JDBC实现最简单的增删改查 我用的数据库是Mysql 1.创建一个MAVEN项目,需要导入两个jar包 分别为lombok 和 mysql 的jar包,在MAVEN的仓库网站可以轻松找得到 2.导入jar包之后 我们来进行数据库的连接操作 其步骤为 第一步:加载数据库驱动 Class.forName("com.mysql.

数据的增删改查(三层)

进行数据操作必然少了对数据的增删改查,用代码生成器生成的代码不是那么满意!方便在今后使用,这里就主要写“数据访问层(Dal)” 注:这里由于是用于用于测试时,临时建的数据库用于测试使用,在实际使用过程中些许改点参数就可以使用了 /// <summary> /// 是否存在该记录 /// </summary> public bool Exists(long Id) { string sql = "select count(*) Name from t_temp where

yii中数据的"增删改查"相关工作!(此文比较乱,需细看)

使用findByPk()根据数据表主键查询的是对象,不需要使用foreach()循环出来 但是使用findall()和find()查询的是对象类型的数组需要使用foreach()循环出来 ======================================= public function getMinLimit () { $sql = "..."; $result = yii::app()->db->createCommand($sql); $query = $r

Mybatis学习总结(二)—使用接口实现数据的增删改查

在这一篇中,让我们使用接口来实现一个用户数据的增删改查. 完成后的项目结构如下图所示: 在这里,person代表了一个用户的实体类.在该类中,描述了相关的信息,包括id.name.age.id_num信息.而personMapper则是该实体类的一个配置文件.需要注意的是,在上一篇博文中,namespace属性的值是其本身,而在这一篇中,使用的是接口.那么两者有什么区别呢?使用接口,那么相关的操作方法不用自己去实现,只需要调用该接口的相关的方法就能够实现相应的功能. 那么,在这里就有一个问题,接

ios CoreData框架的使用,对上下文数据的增删改查,表与表之间的关联,1对多,1对1,谓词查询,多表连接

这里是只是代码,因为博客插入图片效果不是很好,我自己写的总结比较详细,有兴趣的朋友可以在评论里留下邮箱,我收到后会发给大家. 转载注明出处,重视原创者的劳动成果,谢谢! - (void)viewDidLoad { [super viewDidLoad]; [self _creatTable];//插入数据 //    [self _query];// 查询数据 // KVC很霸道,即使readonly通过kvc也可赋值,kvo精华 //    Book * book = [[Book alloc

Node.js + MySQL 实现数据的增删改查

通过完成一个 todo 应用展示 Node.js + MySQL 增删改查的功能.这里后台使用 Koa 及其相应的一些中间件作为 server 提供服务. 初始化项目 $ mkdir node-crud && cd $_ $ yarn init -y && npx gitignore node 上面的命令创建了一个空文件夹 node-crud,进入之后初始化一个 package.json 以及创建 .gitignore 文件. 安装 Koa 并创建 app.js 以启动一个

java使用原生MySQL实现数据的增删改查

一.工具类及配置文件准备工作 1.1 引入jar包 使用原生MySQL,只需要用到MySQL连接的jar包,maven引用方式如下: <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.48</version> </dependency> 1.2 jdbc.propert

JDBC的statement对象(实现增删改查)

JDBC的statement对象 上图中,很多对象都是固定写死的,唯一要变的是statement对象.JDBC的核心是用statement对象执行增删改查. JDBC中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过statement对象向数据库发送增删改查语句即可. statement对象主要有两个方法:1.executeUpdate方法 2.executeQuery方法 1.executeUpdate方法用于向数据库发送增.删.改的sql语句.exec