实现JDBC事务+存储过程
作者:互联网
这是个案例
//定义需要用到的几个变量
1 Connection mconn = null; 2 CallableStatement mstmt = null; 3 ResultSet mrs = null;
1 String result = "";10 11 try { 12 //1 链接数据库 13 String mdriver = PropertiesLoader.getPropertiesVal(连接driver,数据库名称); 14 String murl = PropertiesLoader.getPropertiesVal(数据库链接); 15 String musername = PropertiesLoader.getPropertiesVal(用户名); 16 String mpassword = PropertiesLoader.getPropertiesVal(密码); 17 18 Class.forName(mdriver); 19 mconn = DriverManager.getConnection(murl, musername, mpassword); 20 21 //2.关闭自动提交 22 mconn.setAutoCommit(false); 23 24 //3.存储过程1 25 mstmt = mconn.prepareCall("{call 存储过程名(?,?,?,?,?,?,?,?)}"); 26 //3.1.存储过程1赋参 27 mstmt.setObject(1, 参数1); 28 mstmt.setObject(2, 参数2); 29 mstmt.setObject(3, 参数3); 30 mstmt.setObject(4, 参数4); 31 mstmt.setObject(5, 参数5); 32 mstmt.setObject(6, 参数6); 33 mstmt.setObject(7, ""); 34 mstmt.setObject(8, ""); 35 mstmt.registerOutParameter(7, java.sql.Types.VARCHAR);//参数7为输出参数 36 mstmt.registerOutParameter(8, java.sql.Types.VARCHAR);//参数8为输出参数 37 38 //3.2.执行存储过程 39 mstmt.executeUpdate(); 40 41 //3.3.取结果值43 result = mstmt.getObject(8).toString(); 44 String[] resArray = result.split("\\|"); 45 if("0".equals(resArray[0])){//3.4 如果执行失败了就回滚,并返回失败结果 46 mconn.rollback(); 47 return result; 48 }53 54 //4.存储过程2 55 stmt = mconn.prepareCall("{call 存储过程名(?,?,?,?,?,?,?,?,?,?,?)}"); 56 stmt.setObject(1, 参数1); 57 stmt.setObject(2, 参数2); 58 stmt.setObject(3, 参数3); 59 stmt.setObject(4, 参数4); 60 stmt.setObject(5, 参数5); 61 stmt.setObject(6,参数6); 62 stmt.setObject(7, 参数7); 63 stmt.setObject(8, 参数8); 64 stmt.setObject(9,""); 65 stmt.setObject(10, 参数10); 66 stmt.setObject(11, 参数11); 67 68 stmt.registerOutParameter(9, java.sql.Types.VARCHAR);//第九个参数为输出值 69 stmt.executeUpdate();//提交 70 result = stmt.getObject(9).toString(); 71 resArray = result.split("\\|"); 72 if("0".equals(resArray[0])){//如果执行失败了就回滚,并返回失败结果 73 mconn.rollback(); 74 return result; 75 } 76 stmt.close(); 77 mconn.commit(); 78 79 }catch(SQLException e){//如果捕捉到异常,就回滚+打印+返回错误结果 80 mconn.rollback(); 81 e.printStackTrace(); 82 return "0|服务器异常,请稍后再试!"; 83 } finally {//最终打开自动提交,释放资源 84 mconn.setAutoCommit(true); 85 replease(mconn, mstmt, mrs);//mconn:释放连接 mstmt:释放命名参数处理对象 mrs:释放结果集对象 86 } 87 return "结果";
标签:存储,JDBC,setObject,事务,stmt,参数,mstmt,mconn,result 来源: https://www.cnblogs.com/wenjuan9/p/15839084.html