您的位置:首页 > 编程语言 > Java开发

JAVA程序调用MYSQL存储过程

2015-11-24 01:12 591 查看
1.数据库存储过程:简单滴说,存储过程就是存储在数据库中的一个程序。

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(); //检查是否存在更多结果集
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: