J2EE中怎么调用存储过程,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
1.存储过程分类
分为"系统级存储过程"和"用户级存储过程"
用户级存储过程分为有参数的和无参数的
而有参数的又分为:
1)有输入参数无输出参数
2)有输出参数无输入参数
3)有输入又有输出参数
2.JAVA调用存储(J2EE调用存储)过程例子
1)在SqlServer里创建存储过程,代码如下:
alter proc proc_productName //proc_productName存储过程名 @productName varchar(50) //输入参数 as select productID,productName from Products where productName like @productName; exec proc_productName @productName = '%f%' //测试存储过程写的是否正确
1)创建连接池
2)假如我们用DBCP来调用连接池,代码如下:
public static void getname(String parname) { BasicDataSource bds=new BasicDataSource(); bds.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); bds.setUrl("jdbc:sqlserver://localhost:1433;databaseName=NorthWind"); bds.setUsername("sa"); bds.setPassword(""); String sql="{call proc_productName(?) }"; //call 存储过程名 输入参数 ResultSet rs=null; Connection conn=null; CallableStatement cs=null; //相对于pstmt try { conn=bds.getConnection(); cs=conn.prepareCall(sql); cs.setString(1,"%f%"); //给Sql存储过程输入参数赋值 rs=cs.executeQuery(); while(rs.next()){ System.out.println(rs.getString("productName")); } } catch (SQLException e) { e.printStackTrace(); }finally{ try { rs.close(); cs.close(); conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
3.Java调用存储过程
重点语句截取,其它参照上面例题
1)调用无参数的存储过程
sql="{call proc_viewProduct}"; CallableStatement cstmt=conn.prepareCall(sql); ResultSet rs=cstmt.executeQuery(); while(rs.next) System.out.println(rs.getString("productName"));
2)有输入参数
sql="{call proc_FindByProducts(?)}"; sctmt.setString(1,"%f%");
3)即有输入又有输出
BasicDataSource basicDataSource = new BasicDataSource(); basicDataSource.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); basicDataSource.setUrl("jdbc:sqlserver://localhost:1433;DatabaseName=Northwind"); basicDataSource.setUsername("sa"); basicDataSource.setPassword("qaz123"); String sql = "{call proc_ViewProduct}"; sql = "{call proc_FindByProductNameFromProduct(?)}"; //输入参数 sql = "{call proc_FindProductNameOutPut(?,?)}"; //输出参数 //sql = "{call fyproduct(?,?)}"; try { Connection conn = basicDataSource.getConnection(); CallableStatement cstmt = conn.prepareCall(sql); //cstmt.setInt(1,2); cstmt.setString(1,"'%f%'"); cstmt.registerOutParameter(2,java.sql.Types.INTEGER); ResultSet rs = cstmt.executeQuery(); while(rs.next()){ System.out.println(rs.getString("productName")); } System.out.println(cstmt.getInt(2)); rs.close(); cstmt.close(); conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
关于J2EE中怎么调用存储过程问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。