<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

    blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

    Java對存儲過程的調(diào)用方法

     一、Java怎樣實現(xiàn)對存儲過程的調(diào)用:
      A:不帶輸出參數(shù)的
    create procedure getsum
    @n int =0<--此處為參數(shù)-->
    as
    declare @sum int<--定義變量-->
    declare @i int
    set @sum=0
    set @i=0
    while @i<=@n begin
    set @sum=@sum+@i
    set @i=@i+1
    end
    print 'the sum is '+ltrim(rtrim(str(@sum)))
      在SQL中運行:
      exec getsum 100
      在JAVA中調(diào)用:
      JAVA能夠調(diào)用 可是在JAVA程序卻不能去顯示該存儲過程的結(jié)果 由于上面的存儲過程的參數(shù)類型int 傳遞方式是in(按值)方式
    import java.sql.*;
    public class ProcedureTest
    {
    public static void main(String args[]) throws Exception
    {
    //載入驅(qū)動
    DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
    //獲得連接
    Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");
    //創(chuàng)建存儲過程的對象
    CallableStatement c=conn.prepareCall("{call getsum(?)}");
    //給存儲過程的參數(shù)設(shè)置值
    c.setInt(1,100); //將第一個參數(shù)的值設(shè)置成100
    //運行存儲過程
    c.execute();
    conn.close();
    }
    }
      B:帶輸出參數(shù)的
      1:返回int
    alter procedure getsum
    @n int =0,
    @result int output
    as
    declare @sum int
    declare @i int
    set @sum=0
    set @i=0
    while @i<=@n begin
    set @sum=@sum+@i
    set @i=@i+1
    end
    set @result=@sum
     在查詢分析器中運行:
      declare @myResult int
      exec getsum 100,@myResult output
      print @myResult
      在JAVA中調(diào)用:
    import java.sql.*;
    public class ProcedureTest
    {
    public static void main(String args[]) throws Exception
    {
    //載入驅(qū)動
    DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
    //獲得連接
    Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");
    //創(chuàng)建存儲過程的對象
    CallableStatement c=conn.prepareCall("{call getsum(?,?)}");
    //給存儲過程的第一個參數(shù)設(shè)置值
    c.setInt(1,100);
    //注冊存儲過程的第二個參數(shù)
    c.registerOutParameter(2,java.sql.Types.INTEGER);
    //運行存儲過程
    c.execute();
    //得到存儲過程的輸出參數(shù)值
    System.out.println (c.getInt(2));
    conn.close();
    }
    }
      2:返回varchar
      存儲過程帶游標(biāo):
      在存儲過程中帶游標(biāo) 使用游標(biāo)不停的遍歷orderid
      create procedure CursorIntoProcedure
      @pname varchar(8000) output
      as
      --定義游標(biāo)
      declare cur cursor for select orderid from orders
      --定義一個變量來接收游標(biāo)的值
      declare @v varchar(5)
      --打開游標(biāo)
      open cur
      set @pname=''--給@pname初值
      --提取游標(biāo)的值
      fetch next from cur into @v
      while @@fetch_status=0
      begin
      set @pname=@pname+';'+@v
      fetch next from cur into @v
      end
      print @pname
      --關(guān)閉游標(biāo)
      close cur
      --銷毀游標(biāo)
      deallocate cur
      運行存儲過程:
      exec CursorIntoProcedure ''
      JAVA調(diào)用:
    import java.sql.*;
    public class ProcedureTest
    {
    public static void main(String args[]) throws Exception
    {
    //載入驅(qū)動
    DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
    //獲得連接
    Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");
    CallableStatement c=conn.prepareCall("{call CursorIntoProcedure(?)}");
    c.registerOutParameter(1,java.sql.Types.VARCHAR);
    c.execute();
    System.out.println (c.getString(1));
    conn.close();
    }
    }
      C:刪除數(shù)據(jù)的存儲過程
      存儲過程:
    drop table 學(xué)生基本信息表
    create table 學(xué)生基本信息表
    (
    StuID int primary key,
    StuName varchar(10),
    StuAddress varchar(20)
    )
    insert into 學(xué)生基本信息表 values(1,'三毛','wuhan')
    insert into 學(xué)生基本信息表 values(2,'三毛','wuhan')
    create table 學(xué)生成績表
    (
    StuID int,
    Chinese int,
    PyhSics int
    foreign key(StuID) references 學(xué)生基本信息表(StuID)
    on delete cascade
    on update cascade
    )
    insert into 學(xué)生成績表 values(1,99,100)
    insert into 學(xué)生成績表 values(2,99,100)
      創(chuàng)建存儲過程:
      create procedure delePro
      @StuID int
      as
      delete from 學(xué)生基本信息表 where StuID=@StuID
      --創(chuàng)建完成
      exec delePro 1 --運行存儲過程
      --創(chuàng)建存儲過程
      create procedure selePro
      as
      select * from 學(xué)生基本信息表
      --創(chuàng)建完成
      exec selePro --運行存儲過程
      在JAVA中調(diào)用:
    import java.sql.*;
    public class ProcedureTest
    {
    public static void main(String args[]) throws Exception
    {
    //載入驅(qū)動
    DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
    //獲得連接
    Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");
    //創(chuàng)建存儲過程的對象
    CallableStatement c=conn.prepareCall("{call delePro(?)}");
    c.setInt(1,1);
    c.execute();
    c=conn.prepareCall("{call selePro}");
    ResultSet rs=c.executeQuery();
    while(rs.next())
    {
    String Stu=rs.getString("StuID");
    String name=rs.getString("StuName");
    String add=rs.getString("StuAddress");
    System.out.println ("學(xué)號:"+" "+"姓名:"+" "+"地址");
    System.out.println (Stu+" "+name+" "+add);
    }
    c.close();
    }
    }
    D:改動數(shù)據(jù)的存儲過程
      創(chuàng)建存儲過程:
      create procedure ModPro
      @StuID int,
      @StuName varchar(10)
      as
      update 學(xué)生基本信息表 set StuName=@StuName where StuID=@StuID
      運行存儲過程:
      exec ModPro 2,'四毛'
      JAVA調(diào)用存儲過程:
    import java.sql.*;
    public class ProcedureTest
    {
    public static void main(String args[]) throws Exception
    {
    //載入驅(qū)動
    DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
    //獲得連接
    Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");
    //創(chuàng)建存儲過程的對象
    CallableStatement c=conn.prepareCall("{call ModPro(?,?)}");
    c.setInt(1,2);
    c.setString(2,"美女");
    c.execute();
    c=conn.prepareCall("{call selePro}");
    ResultSet rs=c.executeQuery();
    while(rs.next())
    {
    String Stu=rs.getString("StuID");
    String name=rs.getString("StuName");
    String add=rs.getString("StuAddress");
    System.out.println ("學(xué)號:"+" "+"姓名:"+" "+"地址");
    System.out.println (Stu+" "+name+" "+add);
    }
    c.close();
    }
    }
      E:查詢數(shù)據(jù)的存儲過程(模糊查詢)
      存儲過程:
      create procedure FindCusts
      @cust varchar(10)
      as
      select customerid from orders where customerid
      like '%'+@cust+'%'
      運行:
      execute FindCusts 'alfki'
      在JAVA中調(diào)用:
    import java.sql.*;
    public class ProcedureTest
    {
    public static void main(String args[]) throws Exception
    {
    //載入驅(qū)動
    DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
    //獲得連接
    Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");
    //創(chuàng)建存儲過程的對象
    CallableStatement c=conn.prepareCall("{call FindCusts(?)}");
    c.setString(1,"Tom");
    ResultSet rs=c.executeQuery();
    while(rs.next())
    {
    String cust=rs.getString("customerid");
    System.out.println (cust);
    }
    c.close();
    }
    }
      F:添加數(shù)據(jù)的存儲過程
      存儲過程:
      create procedure InsertPro
      @StuID int,
      @StuName varchar(10),
      @StuAddress varchar(20)
      as
      insert into 學(xué)生基本信息表 values(@StuID,@StuName,@StuAddress)
      調(diào)用存儲過程:
      exec InsertPro 5,'555','555'
      在JAVA中運行:
    import java.sql.*;
    public class ProcedureTest
    {
    public static void main(String args[]) throws Exception
    {
    //載入驅(qū)動
    DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
    //獲得連接
    Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");
    //創(chuàng)建存儲過程的對象
    CallableStatement c=conn.prepareCall("{call InsertPro(?,?,?)}");
    c.setInt(1,6);
    c.setString(2,"Liu");
    c.setString(3,"wuhan");
    c.execute();
    c=conn.prepareCall("{call selePro}");
    ResultSet rs=c.executeQuery();
    while(rs.next())
    {
    String stuid=rs.getString("StuID");
    String name=rs.getString("StuName");
    String address=rs.getString("StuAddress");
    System.out.println (stuid+" "+name+" "+address);
    }
    c.close();
    }
    }
      G:在JAVA中創(chuàng)建存儲過程 而且在JAVA中直接調(diào)用
    import java.sql.*;
    public class ProcedureTest
    {
    public static void main(String args[]) throws Exception
    {
    //載入驅(qū)動
    DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
    //獲得連接
    Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");
    Statement stmt=conn.createStatement();
    //在JAVA中創(chuàng)建存儲過程
    stmt.executeUpdate("create procedure OOP as select * from 學(xué)生成績表");
    CallableStatement c=conn.prepareCall("{call OOP}");
    ResultSet rs=c.executeQuery();
    while(rs.next())
    {
    String chinese=rs.getString("Chinese");
    System.out.println (chinese);
    }
    conn.close();
    }
    }

    posted on 2014-11-07 10:29 順其自然EVO 閱讀(633) 評論(0)  編輯  收藏 所屬分類: 測試學(xué)習(xí)專欄數(shù)據(jù)庫DB2

    <2014年11月>
    2627282930311
    2345678
    9101112131415
    16171819202122
    23242526272829
    30123456

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲人成高清在线播放| 亚洲AV一宅男色影视| 中中文字幕亚洲无线码| 999久久久免费精品播放| 久久青青草原亚洲AV无码麻豆 | 日韩免费高清一级毛片在线| 亚洲激情视频网站| 国产桃色在线成免费视频| 国产成人亚洲综合一区| 女人18毛片a级毛片免费| 亚洲.国产.欧美一区二区三区| 国产美女无遮挡免费网站| 国产午夜亚洲精品不卡电影| 免费国产在线观看不卡| 成人午夜免费视频| 亚洲精品高清无码视频| 小草在线看片免费人成视久网| 亚洲综合一区二区精品导航| 亚洲w码欧洲s码免费| 精品国产日韩久久亚洲| 又粗又大又长又爽免费视频 | 小日子的在线观看免费| 亚洲国产视频一区| 最新69国产成人精品免费视频动漫 | 亚洲免费电影网站| 国产成人精品高清免费| 男女一边摸一边做爽的免费视频| 亚洲AV无码日韩AV无码导航| 亚洲一级毛片免费在线观看| 亚洲欧美日韩自偷自拍| 中文字幕亚洲专区| 美丽的姑娘免费观看在线播放| 亚洲国产精品无码第一区二区三区 | 男人天堂免费视频| 亚洲同性男gay网站在线观看| 国产国产成年年人免费看片| 国产在线精品一区免费香蕉| 亚洲一卡2卡4卡5卡6卡残暴在线| 免费大香伊蕉在人线国产| 国产无遮挡裸体免费视频在线观看| 亚洲人成网站看在线播放|