0


使用JDBC对MySql与Java之间进行数据交互并展示在前端页面

1 什么是JDBC

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

  各数据库厂商根据JDBC的规范,实现自身数据库操作的功能代码,然后以jar包(数据库厂商提供的驱动 包)的形式提供给开发人员使用,开发人员使用反射的机制创建这些具体实现类,按照JDBC的规范来完 成数据库的操作。

接口和JDBC规范的理解:

2 创建数据库

创建商信息表

3 JDBC进行数据库的操作

** 3.1 先在IDEA中创建实体类:**

   类的名字对应数据库表的名字、类的属 性对应表的字段

//IDEA自动构造代码快捷键: alt + insert

3.2 JDBC的增删改查操作

1.首先创建JDBC工具包

public class JDBC {
    private static String driver="com.mysql.cj.jdbc.Driver";
    private static String url="jdbc:mysql://localhost:3306/mydb";//mysql库名
    private static String name="root";//用户名
    private static String pwd="123";//密码
      
    
    private static Connection conn=null;
    
    public static Connection getConn() {
        //1.导入链接MySQL的驱动包
        
        try {
        //2.通过反射加载驱动包
            Class.forName(driver);
        //3.通过驱动管理器获取数据库的链接
            conn=DriverManager.getConnection(url, name, pwd);
            
        } catch (ClassNotFoundException e) {
            System.err.println("找不到加载的驱动类");
            
        }catch (SQLException e) {
            System.err.println("连接数据库失败");
        }
        
        
        
        
        return conn;
    }
        
    public static void close(Connection conn,PreparedStatement ps,ResultSet rs) {
        try {
            if (conn!=null) {
                conn.close();
            }
            if (ps!=null) {
                ps.close();
            }
            if (rs!=null) {
                rs.close();
            }
            
        } catch (Exception e) {
            System.out.println("资源关闭失败");
        }
        
    }
    
    
    public static void close(Connection conn,PreparedStatement ps) {
        try {
            if (conn!=null) {
                conn.close();
            }
            if (ps!=null) {
                ps.close();
            }
        } catch (Exception e) {
            System.out.println("资源关闭失败");
        }
        
    }
}

2.创建接口方法进行增删改查

** 3. JDBC的**增删改查操作

          查询获得的结果集

     结果集的游标默认指向的是数据标题行,需要使用 next() 方法移动游标,指向真正的数据               行。该 方法的返回值是boolean类型,如果向下移动有数据行返回true,否则返回false。

public class GoodsDaoimpl implements GoodsDao{
       Connection conn=null;
       PreparedStatement ps=null;
       ResultSet rs=null;
       Goods good=null;

       int n;
    @Override
    public List<Goods> GoodsAll() {
          List<Goods> arr=new ArrayList<Goods>();
           
          try {

               conn=JDBC.getConn();

               String Sql="select * from goods";

               ps=conn.prepareStatement(Sql);
            //
               rs=ps.executeQuery();
               
               //
               while(rs.next()) {
                     good=new Goods();
                    good.setGoodsId(rs.getInt("goodsId"));
                    good.setGoodsName(rs.getString("goodsName"));
                    good.setPrice(rs.getDouble("price"));
                    good.setStock(rs.getInt("stock"));
                    good.setSupplier(rs.getString("supplier"));
                    
                    arr.add(good);
                    
                    
               }
               System.out.println("商品查询成功");
          }catch (SQLException e) {
            System.out.println("商品查询失败");
        }finally {
            JDBC.close(conn, ps, rs);
        }
          
        return arr;
    }
//删除商品信息操作
    @Override
    public int Goodsdel(int goodsId) {
        try{
            //调用JDBC
            conn=JDBC.getConn();
            //准备SQL
            String sql="delete from goods where goodsId=?";
            //使用
            ps=conn.prepareStatement(sql);

            ps.setInt(1,goodsId);

            n=ps.executeUpdate();
            System.out.println("删除成功");
        }catch (SQLException e){
            System.out.println("删除失败");
        }finally {
            JDBC.close(conn,ps);
        }
        return n;
    }
//添加商品操作
    @Override
    public int GoodsAdd(Goods goods) {
        try{
            //调用JDBC
            conn=JDBC.getConn();
            //准备SQL
            String sql="insert into goods(goodsName,price,stock,supplier) values(?,?,?,?)";
            //使用
            ps=conn.prepareStatement(sql);
            //获取?值
            ps.setString(1, goods.getGoodsName());
            ps.setDouble(2, goods.getPrice());

            ps.setInt(3, goods.getStock());
            ps.setString(4, goods.getSupplier());

            n=ps.executeUpdate();
            System.out.println("添加成功");
        }catch (SQLException e){
            System.out.println("添加失败");
        }finally {
            JDBC.close(conn,ps);
        }
        return n;
    }
//通过id查询商品
    @Override
    public Goods Goodsbyid(int goodsId) {
        try{
            //调用JDBC
            conn=JDBC.getConn();
            //准备SQL
            String sql="select * from goods WHERE goodsId=?";
            //使用
            ps=conn.prepareStatement(sql);
//<!-- 此页面由谢雨新编写(4256) -->
            ps.setInt(1,goodsId);
//<!-- 此页面由谢雨新编写(4256) -->
            rs=ps.executeQuery();
            if (rs.next()){
                good=new Goods();
                good.setGoodsId(rs.getInt("goodsId"));
                good.setGoodsName(rs.getString("goodsName"));
                good.setPrice(rs.getDouble("price"));
                good.setStock(rs.getInt("stock"));
                good.setSupplier(rs.getString("supplier"));
            }
            System.out.println("查询商品编号信息成功");
        }catch (SQLException e){
            System.out.println("查询商品编号信息失败");
        }finally {
            JDBC.close(conn,ps);
        }
        return good;
    }
    //<!-- 此页面由谢雨新编写(4256) -->
    //修改操作
    @Override
    public int GoodsUpdate(Goods goods) {
        try{
            //调用JDBC
            conn=JDBC.getConn();
            //准备SQL
            String sql="update goods set goodsName=?,price=?,stock=?,supplier=? where goodsId=?";
            //使用
            ps=conn.prepareStatement(sql);
            //获取?值
//<!-- 此页面由谢雨新编写(4256) -->
            ps.setString(1, goods.getGoodsName());
            ps.setDouble(2, goods.getPrice());
            ps.setInt(3, goods.getStock());
            ps.setString(4, goods.getSupplier());
            ps.setInt(5,goods.getGoodsId());
//<!-- 此页面由谢雨新编写(4256) -->
            n=ps.executeUpdate();
            System.out.println("修改成功");
        }catch (SQLException e){
            System.out.println("修改失败");
        }finally {
            JDBC.close(conn,ps);
        }
        return n;
    }

3.3通过Servlet向前端传递数据

1. Jdbc全查Servlet

@WebServlet("/GoodsAll")
public class GoodsAll extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//<!-- 此页面由谢雨新编写(4256) -->
        //规划局
        request.setCharacterEncoding("utf-8");
//<!-- 此页面由谢雨新编写(4256) -->
        //
         Goodsservice good=new Goodsserviceimpl();
            List<Goods> goods=good.GoodsAll();
        //<!-- 此页面由谢雨新编写(4256) -->
            System.out.println(goods);
        //
            request.getSession().setAttribute("goods", goods);
            request.getRequestDispatcher("zhuye.jsp").forward(request, response);
    }
//<!-- 此页面由谢雨新编写(4256) -->
}

获取到数据传递到前端主页页面

主页代码

** 主页获取成功页面**

2. Jdbc添加Servlet

@WebServlet("/goodsAdd")
public class GoodsAdd extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置编码格式
        //<!-- 此页面由谢雨新编写(4256) -->
        request.setCharacterEncoding("utf-8");
        //获取前端数据
        String goodsName=request.getParameter("goodsName");
        System.out.println("中文测试");
        Double price=Double.parseDouble(request.getParameter("price"));
        Integer stock=Integer.parseInt(request.getParameter("stock"));
        String supplier= request.getParameter("supplier");
        //存到实体类
        //<!-- 此页面由谢雨新编写(4256) -->
        Goods goods=new Goods();
        goods.setGoodsName(goodsName);
        goods.setPrice(price);
        goods.setStock(stock);
        goods.setSupplier(supplier);

        System.out.println(goods);
//<!-- 此页面由谢雨新编写(4256) -->
        //调用
        Goodsservice good=new Goodsserviceimpl();
           int goodsadd= good.GoodsAdd(goods);

           if (goodsadd >0){
               request.getSession().setAttribute("goodsadd",goodsadd);

//<!-- 此页面由谢雨新编写(4256) -->
               request.getRequestDispatcher("GoodsAll").forward(request, response);
           }else {
               response.sendRedirect("err.jsp");
           }
    }
}
//<!-- 此页面由谢雨新编写(4256) -->//<!-- 此页面由谢雨新编写(4256) -->

** 添加成功会进入全查Servlet,如果全查成功进入主页页面,否则进入错误页面**

因为使用了模态框,会出现部分模态框代码

    <!-- 模态框(Modal) -->
        <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
            <div class="modal-dialog">
                <div class="modal-content">
                    <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
                            &times;
                        </button>
                        <div class="alert alert-success" role="alert">
                            <h1 align="center"><b>添加商品信息页面</b></h1>
                        </div>
                    </div>
                    <div class="modal-body">
                        <div align="center">
                            <form class="form-horizontal" action="goodsAdd" method="post">
                                <div class="form-group" align="center">
                                    <label for="goodsName" class="col-sm-2 control-label">商品名称</label>
                                    <div class="col-sm-8">
                                        <input type="text" class="form-control" id="goodsName" name="goodsName"
                                               placeholder="请设置商品名称">
                                    </div>

                                </div>
                                <div class="form-group">
                                    <label for="price" class="col-sm-2 control-label">商品价格</label>
                                    <!-- 此页面由谢雨新编写(4256) -->

                                    <div class="col-sm-8">
                                        <input type="text" class="form-control" id="price" name="price"
                                               placeholder="请设置商品价格">
                                    </div>
                                </div>
                                <!-- 此页面由谢雨新编写(4256) -->
                                <div class="form-group">
                                    <label for="stock" class="col-sm-2 control-label">商品库存</label>
                                    <div class="col-sm-8">
                                        <input type="text" class="form-control" id="stock" name="stock"
                                               placeholder="请设置商品库存">
                                    </div>
                                </div>
                                <div class="form-group">
                                    <label for="supplier" class="col-sm-2 control-label">商品品牌</label>
                                    <div class="col-sm-8">
                                        <input type="text" class="form-control" id="supplier" name="supplier"
                                               placeholder="请设置商品品牌">
                                    </div>
                                </div>
                                <!-- 此页面由谢雨新编写(4256) -->
                                <div class="form-group">
                                    <div class="col-sm-offset-2 col-sm-10" align="left">
                                        <button type="button" class="btn btn-default" data-dismiss="modal">关闭
                                        </button>
                                        <button type="submit" id="tj" class="btn btn-info" >提交</button>
                                    </div>
                                </div>
                            </form>
                        </div>
                    </div>

                </div><!-- /.modal-content -->
            </div><!-- /.modal -->
        </div>

前端添加页面

添加成功如下

3. Jdbc删除操作Servlet

点击删除按钮

自动获取点击删除id

点击后进行servlet操作

删除成功并进行全查随后刷新主页

删除成功

4.JDBC通过Servlet修改操作

修改操作首先需要获取点击某个修改按钮id

获取到id为3,并获取相对应信息

获取goodsid为3的信息

点击修改进入进行修改的Servlet

public class GoodsUpdate extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置编码格式
        request.setCharacterEncoding("utf-8");
        //获取前端数据
        Integer goodsId=Integer.parseInt(request.getParameter("goodsId"));
        String goodsName=request.getParameter("goodsName");
//<!-- 此页面由谢雨新编写(4256) -->
        Double price=Double.parseDouble(request.getParameter("price"));
        Integer stock=Integer.parseInt(request.getParameter("stock"));
        String supplier= request.getParameter("supplier");
        //存到实体类
        Goods goods=new Goods();
        goods.setGoodsId(goodsId);
        goods.setGoodsName(goodsName);
        goods.setPrice(price);
        goods.setStock(stock);
        goods.setSupplier(supplier);
//<!-- 此页面由谢雨新编写(4256) -->
        System.out.println("获取到修改后信息"+goods);
//<!-- 此页面由谢雨新编写(4256) -->
        //调用
        Goodsservice good=new Goodsserviceimpl();
        int goodUp= good.GoodsUpdate(goods);
        System.out.println(goodUp);
        if (goodUp >0){
            request.getSession().setAttribute("goodUp",goodUp);
//<!-- 此页面由谢雨新编写(4256) -->

            request.getRequestDispatcher("GoodsAll").forward(request, response);
        }else {
            response.sendRedirect("err.jsp");
        }
    }//<!-- 此页面由谢雨新编写(4256) -->
}

修改成功进入全查Servlet

修改成功

---------------------------------------声明-----------------------------------------

1.以上内容结合老师所讲及自己理解,进行编辑,有不足请评论或私信

标签: java mysql 数据库

本文转载自: https://blog.csdn.net/weixin_64262890/article/details/127664082
版权归原作者 小雨不是程序员 所有, 如有侵权,请联系我们删除。

“使用JDBC对MySql与Java之间进行数据交互并展示在前端页面”的评论:

还没有评论