java jdbc in 操作_JDBC操作存储过程:JDBC执行存储过程有IN参数,有OUT参数,并返回简单值...

前面我们讲了JDBC执行存储过程只有IN参数,没有OUT参数。这篇文章我们来讲下有IN参数,有OUT参数,并返回简单值的情况。

操作数据库:mysql

操作目的:建立一个名为sp_insertDetail的存储过程,该存储过程目的是在t_user中插入一条数据,并返回成功插入数据后,目前数据库里一共有几条数据。

sp_insertDetail存储过程的代码如下,还是通过mysql客户端直接创建吧,就不通过JDBC创建该存储过程了,如果还是需要通过JDBC创建存储过程,可以看之前的这篇文章:JDBC创建存储过程。create procedure sp_insertDetail(in sp_name VARCHAR(20),out sp_count INT)

begin

INSERT into t_user(name) values(sp_name,2);

SELECT COUNT(*) INTO sp_count FROM t_user;

end

在mysql客户端中执行以上代码,可以看到以下输出结果[SQL]create procedure sp_insertDetail(in sp_name VARCHAR(20),out sp_count INT)

begin

INSERT into t_user(name) values(sp_name,2);

SELECT COUNT(*) INTO sp_count FROM t_user;

end

受影响的行: 0

时间: 0.003s

在通过JDBC创建存储过程之前,我们来看下当前的数据库结构

b7116bb13d09e24e7fdc4cb64c5d9030.png

可以看到存储过程sp_insertDetail已经创建成功了,并且在t_user表中有2条数据,可以预见到,通过JDBC执行存储过程后,应该返回3这个简单的整型值。

下面我们执行下JDBC执行存储过程的代码,核心代码如下:String jdbcURL = "jdbc:mysql://localhost:3306/codingwhy?useUnicode=true&characterEncoding=utf-8";

String jdbcUser = "root";

String jdbcPassword = "";

Class.forName("com.mysql.jdbc.Driver",2);

Connection conn = DriverManager.getConnection(jdbcURL,jdbcUser,jdbcPassword,2);

//JDBC调用存储过程 只有输入IN参数,没有输出OUT参数

String callProcedureSql="{call sp_insertDetail(?,?)}";

CallableStatement callableStatement = conn.prepareCall(callProcedureSql,2);

callableStatement.setString(1, "codingwhy_new",2);

callableStatement.registerOutParameter(2, java.sql.Types.INTEGER,2);

callableStatement.executeQuery(,2);

int sp_count = callableStatement.getInt("sp_count",2);

System.out.println("JDBC执行存储过程成功,目前数据库中共有"+sp_count+"条数据...",2);

执行以上存储过程后,我们再看下当前的数据库结构,如下图所示:

044f6e8269c4b032727b55f0803ed765.png

可以看到,已经成功插入了记录

在eclipse的console视图下看到了如下结果JDBC执行存储过程成功,目前数据库中共有3条数据...

这样我们就完成了有IN参数,有OUT参数,并返回简单值存储过程的执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值