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

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

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

    qileilove

    blog已經轉移至github,大家請訪問 http://qaseven.github.io/

    Java對存儲過程的調用方法

     一、Java怎樣實現對存儲過程的調用:
      A:不帶輸出參數的
    create procedure getsum
    @n int =0<--此處為參數-->
    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中調用:
      JAVA能夠調用 可是在JAVA程序卻不能去顯示該存儲過程的結果 由于上面的存儲過程的參數類型int 傳遞方式是in(按值)方式
    import java.sql.*;
    public class ProcedureTest
    {
    public static void main(String args[]) throws Exception
    {
    //載入驅動
    DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
    //獲得連接
    Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");
    //創建存儲過程的對象
    CallableStatement c=conn.prepareCall("{call getsum(?)}");
    //給存儲過程的參數設置值
    c.setInt(1,100); //將第一個參數的值設置成100
    //運行存儲過程
    c.execute();
    conn.close();
    }
    }
      B:帶輸出參數的
      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中調用:
    import java.sql.*;
    public class ProcedureTest
    {
    public static void main(String args[]) throws Exception
    {
    //載入驅動
    DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
    //獲得連接
    Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");
    //創建存儲過程的對象
    CallableStatement c=conn.prepareCall("{call getsum(?,?)}");
    //給存儲過程的第一個參數設置值
    c.setInt(1,100);
    //注冊存儲過程的第二個參數
    c.registerOutParameter(2,java.sql.Types.INTEGER);
    //運行存儲過程
    c.execute();
    //得到存儲過程的輸出參數值
    System.out.println (c.getInt(2));
    conn.close();
    }
    }
      2:返回varchar
      存儲過程帶游標:
      在存儲過程中帶游標 使用游標不停的遍歷orderid
      create procedure CursorIntoProcedure
      @pname varchar(8000) output
      as
      --定義游標
      declare cur cursor for select orderid from orders
      --定義一個變量來接收游標的值
      declare @v varchar(5)
      --打開游標
      open cur
      set @pname=''--給@pname初值
      --提取游標的值
      fetch next from cur into @v
      while @@fetch_status=0
      begin
      set @pname=@pname+';'+@v
      fetch next from cur into @v
      end
      print @pname
      --關閉游標
      close cur
      --銷毀游標
      deallocate cur
      運行存儲過程:
      exec CursorIntoProcedure ''
      JAVA調用:
    import java.sql.*;
    public class ProcedureTest
    {
    public static void main(String args[]) throws Exception
    {
    //載入驅動
    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:刪除數據的存儲過程
      存儲過程:
    drop table 學生基本信息表
    create table 學生基本信息表
    (
    StuID int primary key,
    StuName varchar(10),
    StuAddress varchar(20)
    )
    insert into 學生基本信息表 values(1,'三毛','wuhan')
    insert into 學生基本信息表 values(2,'三毛','wuhan')
    create table 學生成績表
    (
    StuID int,
    Chinese int,
    PyhSics int
    foreign key(StuID) references 學生基本信息表(StuID)
    on delete cascade
    on update cascade
    )
    insert into 學生成績表 values(1,99,100)
    insert into 學生成績表 values(2,99,100)
      創建存儲過程:
      create procedure delePro
      @StuID int
      as
      delete from 學生基本信息表 where StuID=@StuID
      --創建完成
      exec delePro 1 --運行存儲過程
      --創建存儲過程
      create procedure selePro
      as
      select * from 學生基本信息表
      --創建完成
      exec selePro --運行存儲過程
      在JAVA中調用:
    import java.sql.*;
    public class ProcedureTest
    {
    public static void main(String args[]) throws Exception
    {
    //載入驅動
    DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
    //獲得連接
    Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");
    //創建存儲過程的對象
    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 ("學號:"+" "+"姓名:"+" "+"地址");
    System.out.println (Stu+" "+name+" "+add);
    }
    c.close();
    }
    }
    D:改動數據的存儲過程
      創建存儲過程:
      create procedure ModPro
      @StuID int,
      @StuName varchar(10)
      as
      update 學生基本信息表 set StuName=@StuName where StuID=@StuID
      運行存儲過程:
      exec ModPro 2,'四毛'
      JAVA調用存儲過程:
    import java.sql.*;
    public class ProcedureTest
    {
    public static void main(String args[]) throws Exception
    {
    //載入驅動
    DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
    //獲得連接
    Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");
    //創建存儲過程的對象
    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 ("學號:"+" "+"姓名:"+" "+"地址");
    System.out.println (Stu+" "+name+" "+add);
    }
    c.close();
    }
    }
      E:查詢數據的存儲過程(模糊查詢)
      存儲過程:
      create procedure FindCusts
      @cust varchar(10)
      as
      select customerid from orders where customerid
      like '%'+@cust+'%'
      運行:
      execute FindCusts 'alfki'
      在JAVA中調用:
    import java.sql.*;
    public class ProcedureTest
    {
    public static void main(String args[]) throws Exception
    {
    //載入驅動
    DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
    //獲得連接
    Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");
    //創建存儲過程的對象
    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:添加數據的存儲過程
      存儲過程:
      create procedure InsertPro
      @StuID int,
      @StuName varchar(10),
      @StuAddress varchar(20)
      as
      insert into 學生基本信息表 values(@StuID,@StuName,@StuAddress)
      調用存儲過程:
      exec InsertPro 5,'555','555'
      在JAVA中運行:
    import java.sql.*;
    public class ProcedureTest
    {
    public static void main(String args[]) throws Exception
    {
    //載入驅動
    DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
    //獲得連接
    Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");
    //創建存儲過程的對象
    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中創建存儲過程 而且在JAVA中直接調用
    import java.sql.*;
    public class ProcedureTest
    {
    public static void main(String args[]) throws Exception
    {
    //載入驅動
    DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
    //獲得連接
    Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");
    Statement stmt=conn.createStatement();
    //在JAVA中創建存儲過程
    stmt.executeUpdate("create procedure OOP as select * from 學生成績表");
    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 閱讀(634) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄數據庫DB2

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

    導航

    統計

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲私人无码综合久久网| 亚洲成AV人片天堂网无码| 伊人久久五月丁香综合中文亚洲| 日本免费电影一区二区| 国产亚洲精品无码成人| A级毛片高清免费视频在线播放| 国产AV无码专区亚洲AWWW| 一级毛片免费在线| 亚洲午夜日韩高清一区 | 在线亚洲午夜片AV大片| 91免费资源网站入口| 亚洲二区在线视频| 午夜毛片不卡高清免费| 国产精品久久亚洲一区二区| 亚洲精品国自产拍在线观看| 二区久久国产乱子伦免费精品| 亚洲啪啪综合AV一区| 99re在线免费视频| 亚洲国产日韩视频观看| 免费观看亚洲人成网站| 99re8这里有精品热视频免费| 久久丫精品国产亚洲av不卡 | 毛片基地免费观看| 亚洲av无码偷拍在线观看| 亚洲免费在线观看| 在线观看肉片AV网站免费| 久久久久久亚洲精品成人| 午夜视频免费成人| 中文字幕免费在线视频| 亚洲免费福利视频| 亚洲高清免费视频| 免费不卡在线观看AV| 亚洲AV日韩AV一区二区三曲| 亚洲人成伊人成综合网久久久| 青娱分类视频精品免费2| 国产亚洲蜜芽精品久久| 亚洲人成电影在线天堂| 国产在线不卡免费播放| 99精品视频免费在线观看| 综合一区自拍亚洲综合图区 | 韩国日本好看电影免费看|