JAVA程序调用MYSQL存储过程
2015-11-24 01:12
591 查看
1.数据库存储过程:简单滴说,存储过程就是存储在数据库中的一个程序。
2..数据库存储过程作用:
第一:存储过程因为SQL语句已经预编绎过了,因此运行的速度比较快。
第二:存储过程可以接受参数、输出参数、返回单个或多个结果集以及返回值。可以向程序返回错误原因。
第三:存储过程运行比较稳定,不会有太多的错误。只要一次成功,以后都会按这个程序运行。
第四:存储过程主要是在服务器上运行,减少对客户机的压力。
第五:存储过程可以包含程序流、逻辑以及对数据库的查询。同时可以实体封装和隐藏了数据逻辑。
第六:存储过程可以在单个存储过程中执行一系列 SQL 语句。
第七:存储过程可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。
此外,如果多条SQL语句执行过程中,过程环节返回了数据作为后面环节的输入数据,如果直接通过
SQL语句执行,势必导致大量的数据通过网络返回到客户机,并在客户机运算;如果封装在存储过程中,
则将运算放在服务器进行,不但减少了客户机的压力,同时也减少了网络流量,提高了执行的效率。
3.java调用存储过程
in 直接返回
out 返回
多个Result
2..数据库存储过程作用:
第一:存储过程因为SQL语句已经预编绎过了,因此运行的速度比较快。
第二:存储过程可以接受参数、输出参数、返回单个或多个结果集以及返回值。可以向程序返回错误原因。
第三:存储过程运行比较稳定,不会有太多的错误。只要一次成功,以后都会按这个程序运行。
第四:存储过程主要是在服务器上运行,减少对客户机的压力。
第五:存储过程可以包含程序流、逻辑以及对数据库的查询。同时可以实体封装和隐藏了数据逻辑。
第六:存储过程可以在单个存储过程中执行一系列 SQL 语句。
第七:存储过程可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。
此外,如果多条SQL语句执行过程中,过程环节返回了数据作为后面环节的输入数据,如果直接通过
SQL语句执行,势必导致大量的数据通过网络返回到客户机,并在客户机运算;如果封装在存储过程中,
则将运算放在服务器进行,不但减少了客户机的压力,同时也减少了网络流量,提高了执行的效率。
3.java调用存储过程
in 直接返回
<span style="font-family:Helvetica, Tahoma, Arial, sans-serif;font-size:18px;"><span style="line-height: 25.1875px;"> </span></span>CallableStatement cstmt = null; ResultSet rs = null; try{ conn = DbConn.getDbConn();//get pool conn CallableStatement cstmt = conn.prepareCall("{call usp_test(?)}"); call.setString(1, "test"); rs = call.executeQuery(); while(rs.next()){ String te = rs.getString(1); System.out.println("te:"+te); } }catch(Exception e){ System.out.println("e: "+e); }finally{ try{ rs.close(); cstmt.close(); conn.close(); }catch(Exception ex){ System.out.println("ex:"+ex); } }
out 返回
<span style="font-family:Helvetica, Tahoma, Arial, sans-serif;font-size:18px;"><span style="line-height: 25.1875px;"> </span></span>public boolean createBussinKinds(String ywbh, String ywmc, String ywbz) { Connection con = null; CallableStatement ps = null; int insertResult = 0; try { con = JdbcUtil.getInstance().getConnection(); con.setAutoCommit(false); ps = con.prepareCall(" call ps_isa_ywxx_insert(?,?,?,?) ; "); ps.setString(1, ywbh); ps.setString(2, ywmc); ps.setString(3, ywbz); ps.registerOutParameter(4, Types.INTEGER) ; ps.execute() ; insertResult = ps.getInt(4); System.out.println("BBBBBBBBBBBBBBBBBBBB"+insertResult); if (insertResult > 0) { log.info("执行添加操作 操作数据库成功!"); return true; } } catch (SQLException e) { log.error(e.getMessage()); } finally { JdbcUtil.close(null, ps, con); } return false; }
多个Result
<span style="font-family:Helvetica, Tahoma, Arial, sans-serif;font-size:18px;"><span style="line-height: 25.1875px;"> </span></span>con = MConnection.getConn(); String sql = "{call test_proc_multi_select()}"; cs = con.prepareCall(sql); boolean hadResults = cs.execute(); int i=0; while (hadResults) { System.out.println("result No:----"+(++i)); ResultSet rs = cs.getResultSet(); while (rs != null && rs.next()) { int id1 = rs.getInt(1); String name1 = rs.getString(2); System.out.println(id1 + ":" + name1); } hadResults = cs.getMoreResults(); //检查是否存在更多结果集 }
相关文章推荐
- MyEclipse插件不能安装原因
- JAVA笔记二
- Java多线程开发系列之番外篇:事件派发线程---EventDispatchThread
- JAVA笔记一环境变量配置
- XML----3、Java创建XML数据
- 第5章(1) 构造器
- XML-----2、Java读取XML数据
- 对象
- JAVA接口
- java关键字this与super
- JDK自带方法实现RSA非对称加密
- java.lang.IllegalStateException: No output folder
- java.lang.Class类和反射机制创建对象
- 解决删除从表,主表存在外键的问题
- Junit4 单元测试的入门总结
- liunx安装jdk
- java学习心得
- 面向对象笔记整理
- java中的断言处理assert
- Spring assert