使用JDBC调用存储过程
1 DELIMITER $$ 2 3 DROP PROCEDURE IF EXISTS `jdbc`.`addUser` $$ 4 CREATE PROCEDURE `jdbc`.`addUser` (in pname varchar(45),in birthday date,in money float,out pid int) 5 BEGIN 6 insert into user(name,birthday,money) value(pname,birthday,money); 7 select last_insert_id() into pid; 8 END $$ 9 10 DELIMITER ;
1 package it.cast.jdbc; 2 3 import java.sql.CallableStatement; 4 import java.sql.Connection; 5 import java.sql.PreparedStatement; 6 import java.sql.ResultSet; 7 import java.sql.SQLException; 8 import java.sql.Statement; 9 import java.sql.Types; 10 11 public class PsTest { 12 13 14 public static void main(String[] args) throws SQLException { 15 create(); 16 } 17 18 static void ps(){ 19 Connection conn = null; 20 CallableStatement cs = null; 21 ResultSet rs = null; 22 23 try { 24 conn = jdbcUtils.getConnection(); 25 26 String sql = "{ call addUser(?,?,?,?)}"; 27 cs = conn.prepareCall(sql); 28 cs.registerOutParameter(4, Types.INTEGER);//输出参数需要注册 29 cs.setString(1, "ps name"); 30 cs.setDate(2, new java.sql.Date(System.currentTimeMillis())); 31 cs.setFloat(3, 100f); 32 33 cs.executeUpdate(); 34 int id = cs.getInt(4); 35 36 System.out.println("id="+id); 37 } catch (SQLException e) { 38 e.printStackTrace(); 39 }finally{ 40 jdbcUtils.free(rs, cs, conn); 41 } 42 } 43 44 static int create() throws SQLException{ 45 Connection conn = null; 46 PreparedStatement ps = null; 47 ResultSet rs = null; 48 49 try { 50 conn = jdbcUtils.getConnection(); 51 52 String sql = "insert into user(name,birthday,money) values(‘zero‘,‘1987-01-01‘,‘4000‘)"; 53 ps = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);//返回插入数据的主键 54 ps.executeUpdate(); 55 56 rs = ps.getGeneratedKeys(); 57 58 int id = 0; 59 if(rs.next()){ 60 id = rs.getInt(1); 61 } 62 63 return id; 64 } finally{ 65 jdbcUtils.free(rs, ps, conn); 66 } 67 68 } 69 70 }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。