科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道JAVA中对存储过程的调用方法

JAVA中对存储过程的调用方法

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

JAVA中对存储过程的调用方法

作者:dxaw 来源:赛迪网技术社区 2007年11月17日

关键字: 调用 存储

  • 评论
  • 分享微博
  • 分享邮件
A:不带输出参数的 z< ]3h '  
  ---------------不带输出参数的---------------------------------- uLX8oRxZ  
create procedure getsum @BFd^`  
@n int =0<--此处为参数--> FQqL;D*P3  
as 1 xJ'- )  
declare @sum int<--定义变量--> EHO)XSg  
declare @i int D*asQx$?Pf  
set @sum=0 tw@I<X'c  
set @i=0 c)~36& W  
while @i<=@n begin a du 4,J[  
set @sum=@sum+@i @[z~ @GTs  
set @i=@i+1  ~ET/51  
end %olWaT7Q  
print 'the sum is '+ltrim(rtrim(str(@sum))) AmBh 't;[  
92;IBfH|  
HG )b  
--------------在SQL中执行:-------------------- W|;s@6*W  
exec getsum 100 ur^$'[vb]  
AN{06@Oe  
HY12Q[h!  
------------在JAVA中调用:--------------------- ,t0BD>8Fd  
JAVA可以调用 但是在JAVA程序却不能去显示该存储过程的结果 因为上面的存储 j?@ 1l=)  
过程的参数类型int 传递方式是in(按值)方式 5X>Q JL  
import java.sql.*; c@bNPq2  
public class ProcedureTest 7c{1)]4'r  
{ G*{2}+71>  
public static void main(String args[]) throws Exception $d9u\GF7  
{ Vcu\rwQ8  
//加载驱动 nW?c 1Y~p  
DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver()); a:pv^cq!  
//获得连接 -;-*roSJ{  
Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa",""); NR hRU8  
9Ra% M  
l2H:$TXP[  
    //创建存储过程的对象 b</j{GvQ[  
    CallableStatement c=conn.divpareCall("{call getsum(?)}"); a=)JL$k*  
    )sc9*gL'<  
    //给存储过程的参数设置值 ,L;3T U  
    c.setInt(1,100); //将第一个参数的值设置成100 ^}+ QaN^  
    {~b'P(G0  
    //执行存储过程  /I|tc[k  
    c.execute(); BR"!8xBt  
    conn.close(); h?hDx%W7  
} bxf>>0} gS  
}  ?.z L!  
  A[a|x0*P  
B:带输出参数的 /YZh.} A  
  1:返回int d]{u =nt  
    -------------------------带输出参数的---------------- unwcs^Qfl  
alter procedure getsum )MA)~~X+  
@n int =0, :8Bz$+U  
@result int output * \ CR  
as -> > !#V:  
declare @sum int ZgXE`=Y9  
declare @i int *KdC(IX  
set @sum=0 VpS`Ua  
set @i=0 ]KI OY  
while @i<=@n begin E)tDZkg:  
set @sum=@sum+@i q'+ 09\J  
set @i=@i+1 r8^;UEE  
end KT xe8hU  
set @result=@sum u3 Y:'L[Z  
  -------------------在查询分析器中执行------------ `%nw?fju  
declare @myResult int jg%SdTwN  
exec getsum 100,@myResult output 0o$5}GK  
print @myResult Fz?2(@?  
Em3n QC]  
~XB M  
~oe}lEN  
  ------------在JAVA中调用--------------------- I9 ED[w  
import java.sql.*; O6; 052Oi  
public class ProcedureTest #8`uJ5n@{x  
{ 9Y/Pl(7  
public static void main(String args[]) throws Exception <8uvtk  
{ <% 8q/  
//加载驱动 Ui2ulLO)  
DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver()); a+IWln,,  
//获得连接  O$m>z  
Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa",""); :S$?z  
"*}Z+*;Sb  
xOG8ai q  
    //创建存储过程的对象 + RrobNC  
    CallableStatement c=conn.divpareCall("{call getsum(?,?)}"); XchTy^z&=  
    #BWH'.5kp  
    //给存储过程的第一个参数设置值 %FSw_o>"  
    c.setInt(1,100); r2kcFOQB  
    ?\:MqVVd  
    //注册存储过程的第二个参数 1<rC8,G  
    c.registerOutParameter(2,java.sql.Types.INTEGER); w$=*JGv  
    8v[4rq{  
    //执行存储过程 PCH1U"n  
    c.execute(); $[{ Wx @  
    wBL9y),1(  
    //得到存储过程的输出参数值 9&@`&$J8  
    System.out.println (c.getInt(2)); nc9jM;@N  
    conn.close(); >t1lN]WR  
} :P|Vht$  
} l ),Wdr  
  2:返回varchar ]]FJJbr  
    ----------------存储过程带游标---------------- qV ?O-W.  
---在存储过程中带游标   使用游标不停的遍历orderid q37\Zsr  
create procedure CursorIntoProcedure '|N"M  
@pname varchar(8000) output DZgLE?RU  
as be_zd  
--定义游标 tbf' R<Z  
declare cur cursor for select orderid from orders i t%Lom  
--定义一个变量来接收游标的值 mH,"d\^.  
declare @v varchar(5) ,=!y@`\  
--打开游标 %{eHh8!  
open cur EL{[#K  
set @pname=''--给@pname初值 Jg~%B3  
--提取游标的值 ,+;7Jyg:  
fetch next from cur into @v X=:c)m^2T  
while @@fetch_status=0 Mo+g?T*M2  
begin G2a ZB-  
|}M4cL+  
/7`.07vG  
set @pname=@pname+';'+@v igTw~Y<  
fetch next from cur into @v &tx"*n:RXq  
end =R]sVek.a;  
print @pname 'Rpjfo2UC7  
--关闭游标 z+#5?$Gh(  
close cur 2G>~v7{k`  
--销毁游标 x w!u'g  
deallocate cur  D$]W7l4  
uIzL+jU[  
,}tOM*!  
l _S2oA  
------------执行存储过程-------------- gQsO*Pn~  
exec CursorIntoProcedure '' s2RLId!  
ug! V>e  
rA6 8{jR  
--------------JAVA调用------------------ u:P >s<  
import java.sql.*; 5S' :OM  
public class ProcedureTest SQ-v}]+  
{ 976]*HJ ]u  
public static void main(String args[]) throws Exception ;M0uN&>M  
{ Y!CtO H  
//加载驱动 sAa tWj$  
DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver()); apn5w%$ _  
//获得连接 @]Oh90,]4  
Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa",""); zI ^+k'  
CallableStatement c=conn.divpareCall("{call CursorIntoProcedure(?)}"); sja %g  
i%]\DJ3-?7  
(.AH{^f2>  
c.registerOutParameter(1,java.sql.Types.VARCHAR); ],f.p(gH`  
>dGB':&Gs^  
c.execute(); |p<8+qx  
3cjc30R  
System.out.println (c.getString(1)); gcgo!X#  
conn.close(); >i/H<lM  
} bHo5DGNN  
} tnMm$]P  
C:删除数据的存储过程 8F/cG{u6  
  ------------------存储过程--------------------------  I\()G  
~5]60VY  
&Q{[:m B  
drop table 学生基本信息表 4t _& =Cy  
create table 学生基本信息表 VSwV|r0pt  
( pgHz/9h  
StuID int primary key, kh5S%evU  
StuName varchar(10), `5'yL9(  
StuAddress varchar(20) >X $G]  
) [;/.8m )l  
insert into 学生基本信息表 values(1,'三毛','wuhan') bYiNj  
insert into 学生基本信息表 values(2,'三毛','wuhan') x-7 7*  
create table 学生成绩表 pF$o ^  
( *`>+`1%M  
StuID int, 8LA;1` +  
Chinese int, FzG`!"  
PyhSics int oEYTSYN  
foreign key(StuID) references 学生基本信息表(StuID) S*FV0d}A  
on delete cascade Pq3H{Kjd  
on update cascade @lq^GARP*  
) >,^l*  
insert into 学生成绩表 values(1,99,100)  BY9w|  
insert into 学生成绩表 values(2,99,100) Iy^^g  
s|J~o#x?  
{];l:=)BX  
--创建存储过程 7adIfAI  
create procedure delePro :$D1T2p7  
@StuID int =~%{j r=  
as { P5Y]y  
delete from 学生基本信息表 where StuID=@StuID ?Y-&_Ew  
--创建完毕  !mJt!h  
exec delePro 1 --执行存储过程 m 6)s.7  
--创建存储过程 T W+ hbl  
create procedure selePro 'F^lsA&  
as ?:*9  
select * from 学生基本信息表 NMwEg01  
--创建完毕 8EWRIdLOM  
exec selePro   --执行存储过程 V5*SF3p  
  ------------------在JAVA中调用---------------- f/J/`0EP  
import java.sql.*; D8]R~N)\x  
public class ProcedureTest u"QZ{]rib  
{ A/=Lx~  
public static void main(String args[]) throws Exception _n-r3}9  
{ Rv_U:SpSC  
//加载驱动 [,q;w9^  
DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver()); d8Z[;'  
//获得连接 l0rRQqC@  
Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa",""); `T\7[  
cga;#7Yi1  
Zsi( SGR  
    //创建存储过程的对象 Q@Sm|bQ\  
    CallableStatement c=conn.divpareCall("{call delePro(?)}"); c\e"5%  
    t~,)L#Mfc  
    c.setInt(1,1); r/"+?M  
    -v#"  
    c.execute(); 9b8W_?rEkl  
    jBZVTi  
    c=conn.divpareCall("{call selePro}"); +Hi=(]z  
    ResultSet rs=c.executeQuery(); LD0z]$rMS  
    Z~c9)k@R  
    while(rs.next()) ? %(Iv(y  
    { ];nvhCW  
      String Stu=rs.getString("StuID"); Vc+@ k1_  
      String name=rs.getString("StuName"); a}+o" /  
      String add=rs.getString("StuAddress"); c CPB@YI?  
      bN8HzlREy  
      System.out.println ("学号:"+"   "+"姓名:"+"   "+"地址"); k|$IWY  
      System.out.println (Stu+"   "+name+"   "+add); j5*z6v@RI  
    } IRP 9hZ  
    c.close(); @k(j9WN,7  
} M&B@\3O'W<  
} e I"G5)q9  
D:修改数据的存储过程 2[j-%ZFG  
---------------------创建存储过程--------------------- d -nGHS  
create procedure ModPro p|mC)X  
@StuID int, !A({BD#d  
@StuName varchar(10) 1x%IZM  
as AxS32}  
update 学生基本信息表 set StuName=@StuName where StuID=@StuID F^2yZjk  
G/g 1'8E%  
lX: B.  
Z9o3&u4 1  
-------------执行存储过程------------------------- ::Q3Hde[f  
exec ModPro 2,'四毛' (W&+D428  
---------------JAVA调用存储过程-------------------- xo%p&:<  
import java.sql.*; q{m`"4x5Mp  
public class ProcedureTest 1"\Iw7  
{ 1-QXq1m&j  
public static void main(String args[]) throws Exception $OG ?<]  
{ ,]7j aG ^  
//加载驱动 6tve\9R  
DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver()); #W@}cNK  
//获得连接 _y!iC7l  
Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa",""); luIhuG3  
.:?dy:OB  
5),g2um  
    //创建存储过程的对象 UR(+:$qrt  
    CallableStatement c=conn.divpareCall("{call ModPro(?,?)}"); pF@;56|j  
    BE_G].{=>n  
    c.setInt(1,2); >"oeX]_],H  
    c.setString(2,"美女"); \~$7%^sT  
          } Q'V$~4;R  
    c.execute(); })Gl-   
    7ZU"T)uX^i  
    c=conn.divpareCall("{call selePro}"); i 63 K I  
    ResultSet rs=c.executeQuery();  kIupon  
    g/<Tk  
    while(rs.next()) 'G4V0%IY`  
    { Z9w';yLq  
      String Stu=rs.getString("StuID"); cvl@ `L  
      String name=rs.getString("StuName"); @-q&G< *4  
      String add=rs.getString("StuAddress"); SChO[mm5  
      PKk%-  
      System.out.println ("学号:"+"   "+"姓名:"+"   "+"地址"); n2N) B88  
      System.out.println (Stu+"   "+name+"   "+add); s2XI-=YVv  
    } 7'dpfm  
    c.close(); B` [;$  
} F.mcv=v  
} &u;`B-K^w  
E:查询数据的存储过程(模糊查询) o&pVTGX  
  -----------------存储过程--------------------- UCi$yGZ&}  
create procedure FindCusts ay,nx$} p  
@cust varchar(10) &1] 'i#NT  
as kYJrfc6YYh  
select customerid from orders where customerid 1.p+X%"  
like '%'+@cust+'%' wf @qR]  
  ---------------执行--------------------------- _hiy7.pO  
execute FindCusts 'alfki' oM vCj~]\l  
  -------------在JAVA中调用-------------------------- dYqKHyYT  
import java.sql.*; u'D;|CS{  
public class ProcedureTest 2F;H@^>  
{ W %RGy|4\  
public static void main(String args[]) throws Exception w#:e/F\1   
{ kxSo`;rZ  
//加载驱动 _{HNl  
DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver()); QczKp W  
//获得连接 FcAL?U<S  
Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa",""); qf^F*x9?  
UDi^**!N  
U#V_  
    //创建存储过程的对象 E BJ I/t#  
    CallableStatement c=conn.divpareCall("{call FindCusts(?)}"); yTAsq#{P  
    c.setString(1,"Tom"); ZQ(qH x  
    q3C2B_p^l  
    ResultSet rs=c.executeQuery(); :G|'s[5|+  
    O ?ywrvi  
    while(rs.next()) K* )>^w0d  
    { PFB`,&P  
      String cust=rs.getString("customerid");     cYpNILv  
      System.out.println (cust); o C4 a|  
    } .toJR(`<m  
    c.close(); qSy cf/  
} g\ N8T b  
} !O5u4UpI  
F:增加数据的存储过程 ]Ge 2%i  
{1`|U~n  
j] `6cdc  
------------存储过程-------------------- ,N(\Y5tq.x  
create procedure InsertPro t"I<1btlei  
@StuID int, K'Yub,  
@StuName varchar(10), ^G?bG^/ds  
@StuAddress varchar(20) VC\f~ C  
as (f]tIfD{  
insert into 学生基本信息表 values(@StuID,@StuName,@StuAddress) uR4/?eO_  
w:7|F3`  
>A cL%u$;  
-----------调用存储过程--------------- Jj~Lx"58<  
exec InsertPro 5,'555','555' |CqC:bd5  
-----------在JAVA中执行------------- j'sR+U {  
import java.sql.*; `T\`?M7\7w  
public class ProcedureTest )Sfu5Z/^  
{ k`Fb6&Su  
public static void main(String args[]) throws Exception [Ws]]Eun  
{ *~ZlG8jD  
//加载驱动 i tv_l8  
DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver()); *tP9}JDbR  
//获得连接 I%*>p:~  
Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa",""); DW"K'c] 2e  
 nv18LQju  
t s< pTT!  
    //创建存储过程的对象 De0JO; pZ  
    CallableStatement c=conn.divpareCall("{call InsertPro(?,?,?)}"); RTc z 1  
    c.setInt(1,6); &PO,Pmd  
    c.setString(2,"Liu"); Sch3.BT~q  
    c.setString(3,"wuhan"); mTyxcjF  
    H2 u5Oh  
    c.execute(); [!JBAS!n  
    ,0yzGv?;T  
    c=conn.divpareCall("{call selePro}"); 7eF]l6i#  
    ResultSet rs=c.executeQuery(); 5p.4(kVw  
    X5)0#r%QN  
    while(rs.next()) cWgMx)>*  
    { 1zI\#AR  
      String stuid=rs.getString("StuID");     YUat;j]qF  
      String name=rs.getString("StuName");     _JJ7nJG/  
      String address=rs.getString("StuAddress");     -Y1Z,Gb  
      System.out.println (stuid+"   "+name+"   "+address); C/wN!*wG  
    } /@e5Sk<vj.  
    c.close(); n"\1)D0(K  
} K++3M< %=<  
} \L]i\:'  
;] CPo2  
ytJ2T+3-  
G:在JAVA中创建存储过程 并且在JAVA中直接调用 @@)3FZ  
import java.sql.*; &~' f Q  
public class ProcedureTest }c%e;"Ti  
{ aa\d7E[3I  
public static void main(String args[]) throws Exception urII(Qt  
{ %;[v'x@9  
//加载驱动 dm-iX;Q!  
DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver()); o,GNw }  
//获得连接 H_YDhS 5t)  
Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa",""); -1<|`$X  
O){pZ@CU  
X)Ut F4]pQ  
Statement stmt=conn.createStatement(); eZV2J &  
//在JAVA中创建存储过程 1;K.d@ `  
stmt.executeUpdate("create procedure OOP as select * from 学生成绩表"); ^g5x0fn  
RW7M[lo  
RK1&E7]  
CallableStatement c=conn.divpareCall("{call OOP}"); b^jTVSxe  
ik5Bgl9,  
ResultSet rs=c.executeQuery(); L T9O`T~  
while(rs.next()) XH+?&I\Qw  
{ KMZ(9zT?  
  String chinese=rs.getString("Chinese"); jDRN/7}  
  o2Z, s  
  System.out.println (chinese); ]^hrE[E(t  
} -qioh\D  
conn.close(); }1 /C<uzh  
nBC,b^r}  
} P#H+m  
}
查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章