java 调用无参存储过程,在Java中如何调用数据库的存储过程,无参,有参

package cn.hncu.jdbc;

import java.sql.CallableStatement;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Types;

import org.junit.Test;

import cn.hncu.pub.ConnUtils;

/*

* 演示Java中如何调用数据库中的存储过程

*

* 调用存储过程得用CallableStatement,

* 它和PreparedStatement类似,也是Statement的子类,也可把用户输入用参数封装的方式防黑。

* 即在父类的基础上增加了一些功能。

*

*/

public class CallableDemo {

// 无参, 如 call p1();

@Test

public void demo1() throws Exception {

Connection con = ConnUtils.getConn();

// ※※※调用存储过程得用 CallableStatement语句对象

CallableStatement cs = con.prepareCall("call p1()");

ResultSet rs = cs.executeQuery(); // 如果存储过程调用之后会有返回结果,则最好用executeQuery()

while (rs.next()) {

System.out.println(rs.getString("name"));

}

con.close();

}

// 有输入参, 如 call p2('P011','小五',28);

@Test

public void demo2() throws Exception {

Connection con = ConnUtils.getConn();

// CallableStatement cs = con.prepareCall("call p2('P011','小五',28)");

// //sql写死了

CallableStatement cs = con.prepareCall("call p2(?,?,?)"); // sql写活

cs.setString(1, "P201");

cs.setString(2, "大王");

cs.setInt(3, 45);

ResultSet rs = cs.executeQuery(); // 如果存储过程调用之后会有返回结果,则最好用executeQuery()

while (rs.next()) {

System.out.println(rs.getString("name"));

}

con.close();

}

// 有输入参和返回值, 如 CALL p3('P012','小小五',27, @aa);

@Test

public void demo3() throws Exception {

Connection con = ConnUtils.getConn();

CallableStatement cs = con.prepareCall("call p3(?,?,?,?)"); // 最后一个?号是用于输出参数的

//3个输入参数

cs.setString(1, "P202");

cs.setString(2, "大大王");

cs.setInt(3, 55);

//※※注册一个返回类型的参数

cs.registerOutParameter(4, Types.INTEGER); //把第4个问号注册成输出参数

//cs.execute(), cs.executeUpdate()

ResultSet rs = cs.executeQuery(); // 如果存储过程调用之后会有返回结果,则最好用executeQuery()

while (rs.next()) {

System.out.println(rs.getString("name"));

}

//※※

int n = cs.getInt(4); //获取存储过程的返回值,之前已经把它注册到第4个点位符了

System.out.println("n="+n);

con.close();

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值