温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

J2EE中怎么调用存储过程

发布时间:2021-06-24 16:17:18 来源:亿速云 阅读:101 作者:Leah 栏目:编程语言

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中怎么调用存储过程问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI