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.
- 3.
- 4.
- 5.
- 6.
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();
}
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
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"));
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
2)有输入参数
sql="{call proc_FindByProducts(?)}";
sctmt.setString(1,"%f%");
- 1.
- 2.
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();
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
J2EE调用存储过程就介绍到这里。
【编辑推荐】