JDBC之调用存储过程

来源:互联网 发布:淘宝客户运营平台在哪 编辑:程序博客网 时间:2024/06/01 01:34

第一步:定义存储过程(注意:不同MySQL定义存储过程语法有差异)

DELIMITER $$DROP PROCEDURE IF EXISTS `jdbc`.`addUser` $$CREATE PROCEDURE `jdbc`.`addUser` (IN `pname` varchar(45),IN `birthday` date,IN `money` float,OUT `pid` int)BEGINinsert into user(`name`,`birthday`,`money`) values(pname, birthday, money);select last_insert_id() into id;END $$DELIMITER ;
第二步:编写Java代码进行测试

package cn.itcast.jdbc;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Types;import org.junit.Test;/** * JDBC之调用存储过程 */public class CallableStatementTest {@Testpublic void testCs() throws SQLException {csTest();}/** * 测试调用存储过程 * @throws SQLException */static void csTest() throws SQLException {Connection conn = null;CallableStatement cs = null;ResultSet rs = null;try {//建立连接conn = JdbcUtils.getConnection();//即使没有参数,下面这行也需要括号String sql = "{ call addUser(?, ?, ?, ?)}";cs = conn.prepareCall(sql);//设置输出参数cs.registerOutParameter(4, Types.INTEGER);cs.setString(1, "ps name");//设置第一个参数cs.setDate(2, new java.sql.Date(System.currentTimeMillis()));cs.setFloat(3, 100f);cs.executeUpdate();//获取输出结果int id = cs.getInt(4);System.out.println("id=" + id);} finally {//因为CallableStatement是继承自PreparedStatement,//所以可以直接传入关闭JdbcUtils.free(rs, cs, conn);}}}



原创粉丝点击