十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
J2EE中怎么调用存储过程,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
我们提供的服务有:成都网站建设、成都网站制作、微信公众号开发、网站优化、网站认证、南靖ssl等。为近千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的南靖网站制作公司
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中怎么调用存储过程问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。