操作数据库:mysql
操作目的:建立一个名为sp_insertDetail的存储过程,该存储过程目的是在t_user中插入一条数据。
至于怎么通过JDBC创建存储过程,可以看下我们之前的文章:JDBC创建存储过程
该存储过程只有输入IN参数,没有输出OUT参数
sp_insertDetail存储过程的代码如下,这边就不通过JDBC创建存储过程了。
create procedure sp_insertDetail(in sp_name VARCHAR(20)) begin INSERT into t_user(name) values(sp_name,2); end
在mysql中执行以上JDBC代码,可以看到如下的输出结果:
[SQL]create procedure sp_insertDetail(in sp_name VARCHAR(20)) begin INSERT into t_user(name) values(sp_name,2); end 受影响的行: 0 时间: 0.001s
我们来看下当前的数据库情况,如下图所示:

可以看到,已经存在sp_insertDetail的存储过程了,并且t_user表中有一条ID为1,那么为codingwhy的记录。
下面我们来执行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.com",2);
callableStatement.executeQuery(,2);
System.out.println("JDBC执行存储过程成功...",2);执行以上JDBC调用存储过程的代码后,我们来看下当前的数据库结构,如下图所示

可以看到,已经成功插入了一条数据记录。
这样我们就完成了只有IN参数,没有OUT参数存储过程的执行。
编程那点事
