操作数据库: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参数存储过程的执行。