JavaWeb——操作数据库JDBC之存储过程调用

JavaWeb——JDBC调用MySQL存储过程

七、MySQL 存储过程调用

  • 存储过程,在日常数据库操作中也是经常使用,因此在这里实现用 JSP 页面调用存储过程。

1、创建存储过程

  • 首先在 MySQL 目标数据库中使用命令行创建存储过程:
    DELIMITER $$
    create procedure findAllBook()
    begin
    select * from tb_books order by id desc;
    end $$
    

2、创建一个 Bean

  • 新建一个 Bean,用于调用存储过程,代码如下:
    //IntelliJ IDEA
    //JavaWebProject1
    //FindBook
    //2019/12/3
    // Author:御承扬
    //E-mail:[email protected]
    
    package com.lyq.bean;
    
    import java.sql.*;
    import java.util.ArrayList;
    import java.util.List;
    
    public class FindBook {
        public Connection getConnection(){
            Connection conn;
            try{
                Class.forName("com.mysql.jdbc.Driver");
                String url = "jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8";
                String username = "root";
                String password = "root19537";
                try{
                    conn = DriverManager.getConnection(url, username, password);
                    if(conn != null)
                    {
                        return conn;
                    }
                }catch (SQLException e){
                    e.printStackTrace();
                }
            }catch (ClassNotFoundException e){
                e.printStackTrace();
            }
            return null;
        }
    
        public List<Book> findAll(){
            List<Book> list = new ArrayList<>();
            Connection conn = getConnection();
            try{
                CallableStatement cs = conn.prepareCall("{call findAllBook()}");
                ResultSet rs = cs.executeQuery();
                while (rs.next()){
                    Book book = new Book();
                    book.setId(rs.getInt("id"));
                    book.setName(rs.getString("name"));
                    book.setPrice(rs.getDouble("price"));
                    book.setBookCount(rs.getInt("bookCount"));
                    book.setAuthor(rs.getString("author"));
                    list.add(book);
                }
                rs.close();
                cs.close();
                conn.close();
            }catch (SQLException e){
                e.printStackTrace();
            }
            return list;
        }
    }
    

3、使用 Bean

  • 创建一个 JSP 页面,代码如下:
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ page import="com.lyq.bean.Book" %>
    <%@ page import="java.util.List" %>
    <html>
    <head>
        <title>调用存储过程</title>
        <style type="text/css">
            body{
                background: #d7c7e9;
                align-items: center;
                text-align: center;
            }
        </style>
    </head>
    <body>
    <jsp:useBean id="findBook" class="com.lyq.bean.FindBook"></jsp:useBean>
    <table align="center" width="450" border="1">
        <tr>
            <td align="center" colspan="5">
                <h2>所有图书信息</h2>
            </td>
        </tr>
        <<tr align="center" bgcolor="#e1ffc1">
            <td><b>ID</b></td>
            <td><b>图书名称</b></td>
            <td><b>价格</b></td>
            <td><b>数量</b></td>
            <td><b>作者</b></td>
        </tr>
        <%
            List<Book> list = findBook.findAll();
            if(list == null || list.size()<1){
                out.print("没有数据!!!!");
            }else{
                for(Book book:list){
        %>
        <tr align="center" bgcolor="white">
            <td><%=book.getId()%>
            </td>
            <td><%=book.getName()%>
            </td>
            <td><%=book.getPrice()%>
            </td>
            <td><%=book.getBookCount()%>
            </td>
            <td><%=book.getAuthor()%>
            </td>
        </tr>
        <%
                }
            }
        %>
    </table>
    </body>
    </html>
    
  • 运行结果:
    在这里插入图片描述

上一篇

下一篇

发布了146 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42896653/article/details/103377587