22---数据库编程10(callablestatement)

 

CallableStatement主要是调用数据库中的存储过程,CallableStatement也是
Statement接口的子接口,在使用CallableStatement的时候可以接受过程的返回值;

现在先建立一个mysql的存储过程:
 delimite //---将分割符定义为//,默认的分割符是个分号;
 drop procedure myproc //-----删除过程
 create procedure myproc(IN p1 int,INOUT p2 int,OUT p3 int)
 begin
  select p1,p2,p3;  --------------输出p1,p2,p3的内容
  set p1=10;
  set p2=20;
  set p3=30;
 end
 //


IN类型:默认的设置,什么都不声明就表示IN类型,只是将内容传递进来;
INOUT类型:表示把值传递到过程中,并且可以保留过程对值的修改,引用
OUT:可以不用传递内容,过程中对此值的操作可以返回;

delimiter ;
set @x1=70;
set @x2=80;
call myproc(@x1,@x2,@x3);

 

 

/*---创建数据库表
 drop table user;
 create table user(
  id   int   auto_increment primary key,
  name  varchar(30) not null,
  password varchar(32) not null,
  age   int   not null,
  sex   varchar(2) default '男',
  birthday Date
 );
 */

 import java.sql.DriverManager;
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.sql.CallableStatement;
 import java.sql.TypesSS;

 public class Demo{
  //定义数据库的驱动程序
  public static final String DBDRIVER="oracle.jdbc.driver.OracleDriver";
  //定义数据库的连接地址:
  public static final String DBURL="jdbc:oracle:thin:@localhost:1521:lid";
  //定义数据库的用户名
  public static final String DBUSER="root";
  //定义数据库的密码
  public static final String DBPASSWORD="123";
  public static void main(String args[]) throws Exception{
   Connection conn=null;  
   CallableStatement cstmt=null;
   Class.forName(DBDRIVER);
   conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
   String sql="{CALL myproc(?,?,?)}";
   cstmt=conn.prepareCall(sql);
   cstmt.setInt(1,70);
   cstmt.setInt(2,80);
   cstmt.registerOutParameter(2,Types.INTEGER);
   cstmt.registerOutParameter(3,Types.INTEGER)
   cstmt.execute();
   System.out.println("INOUT的返回值:"+cstmt.getInt(2));
   System.out.println("OUT 的返回值:"+cstmt.getInt(3));
   cstmt.clost();
   psmt.close();
   conn.close();
   }
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bzuld

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值