Java 环境中执行SQL命令和调用存储过程

发布时间:2016-12-8 14:11:19 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Java 环境中执行SQL命令和调用存储过程",主要涉及到Java 环境中执行SQL命令和调用存储过程方面的内容,对于Java 环境中执行SQL命令和调用存储过程感兴趣的同学可以参考一下。

Java 环境中执行SQL命令和调用存储过程,使用前JDBC驱动必须有效,例如CLASS_PATH中必须有JDBC驱动。   用到的导入库 import java.sql.CallableStatement; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; import java.sql.SQLException;   执行SQL演示 /** * 执行 SQL * * @param id * @return */ private int ExecuteSQL(String id) { Integer result = null; // 执行SQL Connection con = null; CallableStatement cstmt = null; Statement stmt = null; ResultSet rs = null; try { Context ctx = new InitialContext(); // 以下两种连接方式根据连接MySQL还是SQLSERVER来决定采用 // SQLSERVER 使用,如果是 MySQL,MySQL 的描述略有区别 DataSource ds = (DataSource) ctx.lookup("jdbc/database"); // 连接数据库 con = ds.getConnection(); // 定义存储过程, 问号个数代表参数个数 // 不使用 first 和 last 方法可以使用 // stmt = con.createStatement(); // 若使用 first 和 last 方式使用 stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); // 存在返回结果集的 sql 调用 rs = stmt.executeQuery("select * from mytable"); while (rs.next()) { // 取得表内容 String name = rs.getString("name"); String sex = rs.getInt("sex"); // ... } // 不存在返回结果集的调用,例如 insert 和 update int i = stmt.executeUpdate("insert mytable(f1, f2) value(1, 2"); if (i > 0) { // i 值表示发生变化的记录数 // 若为 0 则未修改任何记录 } } catch (NamingException e) { // 发生连接异常 e.printStackTrace(); } catch (SQLException e) { // sql 返回的异常 e.printStackTrace(); } catch (Exception e) { // 也可以不用 NamingException 和 SQLException,只使用 Exception 异常 e.printStackTrace(); } finally { if (rs != null) { try { rs.close(); } catch (Exception e) { } } if (cstmt != null) { try { cstmt.close(); } catch (Exception e) { } } if (stmt != null) { try { stmt.close(); } catch (Exception e) { } } if (con != null) { try { con.close(); } catch (Exception e) { } } } return result; }   调用存储过程演示 /** * 调用存储过程 * * @param id * @return */ private int CallProcedure(String id) { Integer result = null; // 调用存储过程 Connection con = null; CallableStatement cstmt = null; Statement stmt = null; ResultSet rs = null; try { Context ctx = new InitialContext(); DataSource ds = (DataSource) ctx.lookup("jdbc/database"); // 连接数据库 con = ds.getConnection(); // 定义存储过程, 问号个数代表参数个数 cstmt = con.prepareCall("{call procName(?, ?)}"); // 设置返回参数 cstmt.registerOutParameter(1, java.sql.Types.BIGINT); // 设置第二个参数 cstmt.setString(2, id); // 设置第三个参数(如果有) // ... // 执行 cstmt.executeUpdate(); // 获得返回结果 result = cstmt.getInt(1); } catch (NamingException e) { // 发生连接异常 e.printStackTrace(); } catch (SQLException e) { // sql 返回的异常 e.printStackTrace(); } catch (Exception e) { // 也可以不用 NamingException 和 SQLException,只使用 Exception 异常 e.printStackTrace(); } finally { if (rs != null) { try { rs.close(); } catch (Exception e) { } } if (cstmt != null) { try { cstmt.close(); } catch (Exception e) { } } if (stmt != null) { try { stmt.close(); } catch (Exception e) { } } if (con != null) { try { con.close(); } catch (Exception e) { } } } return result; }   http://bbs.linehot7.net/thread-65-1-1.html blog.csdn.net/joyous/article/details/11179981 Q群讨论:236201801 

上一篇:E4.1----
下一篇:struts2动态方法配置 Action,使一个Action可处理多请求

相关文章

相关评论