java jdbc导出存储过程_Java JDBC调用存储过程:无参、输入带参、输出及输出带参...

packagexzg;importjava.sql.CallableStatement;importjava.sql.Connection;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Types;public classJDBCtest {public static voidmain(String[] args) {//test();//test2();

test3();

}/** 命令行创建的存储过程函数为: create procedure all_user() select * from user;

* 创建一个查询所有内容的存储过程

* 调用无参存储过程*/

static voidtest() {

Connection conn=Dbutil.open();try{//存储过程函数固定格式:{call xxx}

CallableStatement cs = conn.prepareCall("{call all_user()}");

ResultSet rs=cs.executeQuery();while(rs.next()) {int id = rs.getInt(1);

String name= rs.getString(2);int age = rs.getInt(3);

System.out.println(id+ "," + name + "," +age);

}

}catch(SQLException e) {

e.printStackTrace();

}finally{

Dbutil.close(conn);

}

}/** 命令行创建的存储过程函数为:

* create procedure insert_user(in myname varchar(20),

* in myage tinyint(20)) insert user(username,age) values(myname,myemail);

* 表示创建一个插入myname,数据类型为varchar(20); myage,数据类型为tinyint(20)的存储过程

* 调用输入带参存储过程*/

static voidtest2() {

Connection conn=Dbutil.open();try{

CallableStatement cs= conn.prepareCall("{call insert_user(?,?)}");

cs.setString(1, "jack");

cs.setInt(2, 10);

cs.executeUpdate();

}catch(SQLException e) {

e.printStackTrace();

}finally{

Dbutil.close(conn);

}

}/** 命令行创建的存储过程函数为:

* create procedure getnamebyid(in cid int,

* out return_name varchar(20)) select username into return_name

* from user where id =cid;

* 表示创建一个如果id为cid,那么就输出返回一个return_name

* 调用输入、输出带参存储过程*/

static voidtest3() {

Connection conn=Dbutil.open();try{

CallableStatement cs= conn.prepareCall("{call getnamebyid(?,?)}");

cs.setInt(1, 3); //索引1,第3个id//输出参数的话要注册

cs.registerOutParameter(2, Types.CHAR);//注册后要更新

cs.execute();

String name=cs.getString(2); //这个是索引的意思

cs.executeQuery();

System.out.println(name);

}catch(SQLException e) {

e.printStackTrace();

}finally{

Dbutil.close(conn);

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值