<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,大家請?jiān)L問 http://qaseven.github.io/

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

     一、Java怎樣實(shí)現(xiàn)對存儲(chǔ)過程的調(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中運(yùn)行:
      exec getsum 100
      在JAVA中調(diào)用:
      JAVA能夠調(diào)用 可是在JAVA程序卻不能去顯示該存儲(chǔ)過程的結(jié)果 由于上面的存儲(chǔ)過程的參數(shù)類型int 傳遞方式是in(按值)方式
    import java.sql.*;
    public class ProcedureTest
    {
    public static void main(String args[]) throws Exception
    {
    //載入驅(qū)動(dòng)
    DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
    //獲得連接
    Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");
    //創(chuàng)建存儲(chǔ)過程的對象
    CallableStatement c=conn.prepareCall("{call getsum(?)}");
    //給存儲(chǔ)過程的參數(shù)設(shè)置值
    c.setInt(1,100); //將第一個(gè)參數(shù)的值設(shè)置成100
    //運(yùn)行存儲(chǔ)過程
    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
     在查詢分析器中運(yùn)行:
      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ū)動(dòng)
    DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
    //獲得連接
    Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");
    //創(chuàng)建存儲(chǔ)過程的對象
    CallableStatement c=conn.prepareCall("{call getsum(?,?)}");
    //給存儲(chǔ)過程的第一個(gè)參數(shù)設(shè)置值
    c.setInt(1,100);
    //注冊存儲(chǔ)過程的第二個(gè)參數(shù)
    c.registerOutParameter(2,java.sql.Types.INTEGER);
    //運(yùn)行存儲(chǔ)過程
    c.execute();
    //得到存儲(chǔ)過程的輸出參數(shù)值
    System.out.println (c.getInt(2));
    conn.close();
    }
    }
      2:返回varchar
      存儲(chǔ)過程帶游標(biāo):
      在存儲(chǔ)過程中帶游標(biāo) 使用游標(biāo)不停的遍歷orderid
      create procedure CursorIntoProcedure
      @pname varchar(8000) output
      as
      --定義游標(biāo)
      declare cur cursor for select orderid from orders
      --定義一個(gè)變量來接收游標(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
      運(yùn)行存儲(chǔ)過程:
      exec CursorIntoProcedure ''
      JAVA調(diào)用:
    import java.sql.*;
    public class ProcedureTest
    {
    public static void main(String args[]) throws Exception
    {
    //載入驅(qū)動(dòng)
    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ù)的存儲(chǔ)過程
      存儲(chǔ)過程:
    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)建存儲(chǔ)過程:
      create procedure delePro
      @StuID int
      as
      delete from 學(xué)生基本信息表 where StuID=@StuID
      --創(chuàng)建完成
      exec delePro 1 --運(yùn)行存儲(chǔ)過程
      --創(chuàng)建存儲(chǔ)過程
      create procedure selePro
      as
      select * from 學(xué)生基本信息表
      --創(chuàng)建完成
      exec selePro --運(yùn)行存儲(chǔ)過程
      在JAVA中調(diào)用:
    import java.sql.*;
    public class ProcedureTest
    {
    public static void main(String args[]) throws Exception
    {
    //載入驅(qū)動(dòng)
    DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
    //獲得連接
    Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");
    //創(chuàng)建存儲(chǔ)過程的對象
    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é)號(hào):"+" "+"姓名:"+" "+"地址");
    System.out.println (Stu+" "+name+" "+add);
    }
    c.close();
    }
    }
    D:改動(dòng)數(shù)據(jù)的存儲(chǔ)過程
      創(chuàng)建存儲(chǔ)過程:
      create procedure ModPro
      @StuID int,
      @StuName varchar(10)
      as
      update 學(xué)生基本信息表 set StuName=@StuName where StuID=@StuID
      運(yùn)行存儲(chǔ)過程:
      exec ModPro 2,'四毛'
      JAVA調(diào)用存儲(chǔ)過程:
    import java.sql.*;
    public class ProcedureTest
    {
    public static void main(String args[]) throws Exception
    {
    //載入驅(qū)動(dòng)
    DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
    //獲得連接
    Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");
    //創(chuàng)建存儲(chǔ)過程的對象
    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é)號(hào):"+" "+"姓名:"+" "+"地址");
    System.out.println (Stu+" "+name+" "+add);
    }
    c.close();
    }
    }
      E:查詢數(shù)據(jù)的存儲(chǔ)過程(模糊查詢)
      存儲(chǔ)過程:
      create procedure FindCusts
      @cust varchar(10)
      as
      select customerid from orders where customerid
      like '%'+@cust+'%'
      運(yùn)行:
      execute FindCusts 'alfki'
      在JAVA中調(diào)用:
    import java.sql.*;
    public class ProcedureTest
    {
    public static void main(String args[]) throws Exception
    {
    //載入驅(qū)動(dòng)
    DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
    //獲得連接
    Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");
    //創(chuàng)建存儲(chǔ)過程的對象
    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ù)的存儲(chǔ)過程
      存儲(chǔ)過程:
      create procedure InsertPro
      @StuID int,
      @StuName varchar(10),
      @StuAddress varchar(20)
      as
      insert into 學(xué)生基本信息表 values(@StuID,@StuName,@StuAddress)
      調(diào)用存儲(chǔ)過程:
      exec InsertPro 5,'555','555'
      在JAVA中運(yùn)行:
    import java.sql.*;
    public class ProcedureTest
    {
    public static void main(String args[]) throws Exception
    {
    //載入驅(qū)動(dòng)
    DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
    //獲得連接
    Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");
    //創(chuàng)建存儲(chǔ)過程的對象
    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)建存儲(chǔ)過程 而且在JAVA中直接調(diào)用
    import java.sql.*;
    public class ProcedureTest
    {
    public static void main(String args[]) throws Exception
    {
    //載入驅(qū)動(dòng)
    DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
    //獲得連接
    Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");
    Statement stmt=conn.createStatement();
    //在JAVA中創(chuàng)建存儲(chǔ)過程
    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 閱讀(639) 評論(0)  編輯  收藏 所屬分類: 測試學(xué)習(xí)專欄數(shù)據(jù)庫DB2

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

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久久久久夜精品精品免费啦| 色视频在线观看免费| 国产成人精品免费久久久久| 亚洲国产精品激情在线观看| 阿v免费在线观看| 亚洲男人在线无码视频| 一级做a爰片久久毛片免费看| 免费人成网站在线播放| 黄色一级毛片免费看| 亚洲午夜AV无码专区在线播放| 手机永久免费的AV在线电影网| 婷婷亚洲天堂影院| 一区二区三区免费视频播放器| 国产av无码专区亚洲av果冻传媒| 91免费在线视频| 亚洲国产精品热久久| 日本免费xxxx色视频| 亚洲熟妇无码AV| 日韩精品亚洲专区在线观看| 免费一级特黄特色大片| 亚洲日韩精品无码一区二区三区 | 久久影视综合亚洲| 国产成人无码区免费网站| 久久亚洲日韩精品一区二区三区 | 69视频在线观看高清免费| 亚洲午夜成激人情在线影院 | 免费人成视网站在线观看不卡| 中国国产高清免费av片| 337p欧洲亚洲大胆艺术| 最近最新的免费中文字幕| 色吊丝性永久免费看码| 亚洲av永久无码精品漫画| 99久久综合国产精品免费| 青青免费在线视频| 亚洲黄色免费观看| 国产一区二区免费在线| 美女被cao网站免费看在线看| 亚洲一区二区三区精品视频 | 亚洲一区二区在线免费观看| 亚洲中文字幕乱码一区| 中文字幕精品亚洲无线码二区|