JDBC调用MySQL的调用过程CallableStatement

Posted 夕西行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDBC调用MySQL的调用过程CallableStatement相关的知识,希望对你有一定的参考价值。

调用过程可以当作函数理解,具体参考本人博文https://www.cnblogs.com/xixixing/p/9720261.html

mysql的test数据库中已经创建好存储过程p2(n),实现筛选school表id>n的信息

CallableStatement callStatement=con.prepareCall("{call p2(?)}");  调用test数据库的调用过程p2
callStatement.setString(1,"2");    赋值,筛选school表id>2的信息
ResultSet rs=callStatement.executeQuery();  结果展示

import java.sql.*;

public class Demo {
    public static void main(String[] args) {
        //定义为null,因为它们是数据流,之后要finally依次关闭
        Connection con = null;//连接
        CallableStatement call=null;//调用过程语句接口
        ResultSet rs = null;//结果集接口
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");//加载驱动
            String url = "jdbc:mysql://localhost:3306/test?serverTimezone=UTC&characterEncoding=utf8&useSSL=false";
            con = DriverManager.getConnection(url, "root", "123456");//连接数据库test
            //System.out.println(con);//查看结果,确认是否连接成功
            call=con.prepareCall("{call p2(?)}");
            call.setString(1,"2");//给通配符?赋值,即n=2
            rs=call.executeQuery();
            System.out.println("id\\tname\\tsex\\tbirthday");
            while (rs.next()) {//下一行
                int id = rs.getInt("id");//或1,第一列值
                String name = rs.getString(2);
                String sex = rs.getString(3);
                String birthday = rs.getString(4);
                System.out.println(id + "\\t" + name + "\\t" + sex + "\\t" +birthday);
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {//注意流的关闭顺序
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (call != null) {
                try {
                    call.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (con != null) {
                try {
                    con.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

 

以上是关于JDBC调用MySQL的调用过程CallableStatement的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 jdbc 中调用一个使用 mysql 返回表的存储过程吗?

MySQL 和 JDBC 缓存(?)问题与 Scala 中的过程调用有关

jdbc调用mysql存储过程实现代码带有输入和输出

JDBC对MySQL数据库存储过程的调用

JDBC对MySQL数据库存储过程的调用

Java调用MySQL存储过程