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

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

步骤
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服务器中,在浏览器运行
页面见第一个图。

这样,一个简单的增删改查操作就完成了。
如果发现不妥或疑问之处,麻烦提出。这段时间正在学习这方面的知识,欢迎交流。

你可能感兴趣的:(MyEclipse,jdbc,servlet,员工信息管理)