<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • Java調用MySQL存儲過程并獲得返回值的方法

    時間:2024-08-25 16:32:40 JAVA認證 我要投稿
    • 相關推薦

    Java調用MySQL存儲過程并獲得返回值的方法

      本文yjbys小編為大家主要介紹了Java調用MySQL存儲過程并獲得返回值的方法,實例分析了java實現MySQL存儲過程的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下

      本文實例講述了Java調用MySQL存儲過程并獲得返回值的方法。分享給大家供大家參考。具體如下:

      private void empsInDept(Connection myConnect, int deptId) throws SQLException {

      CallableStatement cStmt = myConnect.prepareCall("{CALL sp_emps_in_dept(?)}");

      cStmt.setInt(1, deptId);

      cStmt.execute();

      ResultSet rs1 = cStmt.getResultSet();

      while (rs1.next()) {

      System.out.println(rs1.getString("department_name") + " " + rs1.getString("location"));

      }

      rs1.close();

      /* process second result set */

      if (cStmt.getMoreResults()) {

      ResultSet rs2 = cStmt.getResultSet();

      while (rs2.next()) {

      System.out.println(rs2.getInt(1) + " " + rs2.getString(2) + " " + rs2.getString(3));

      }

      rs2.close();

      }

      cStmt.close();

      }

      本文實例講述了java調用mysql存儲過程的方法。分享給大家供大家參考。具體如下:

      數據庫的測試代碼如下 :

      1、新建表test

      create table test(

      field1 int not null

      )

      TYPE=MyISAM ;

      insert into test(field1) values(1);

      2、刪除已存在的存儲過程:

      -- 刪除儲存過程

      delimiter // -- 定義結束符號

      drop procedure p_test;

      3、mysql存儲過程定義:

      create procedure p_test()

      begin

      declare temp int;

      set temp = 0;

      update test set field1 = values(temp);

      end

      4、調用方法:

      CallableStatement cStmt = conn.prepareCall("{call p_test()}");

      cStmt.executeUpdate();

      import java.sql.*;

      /**

      iGoder

      */

      public class ProcedureTest {

      /*

      表和存儲過程定義如下:

      delimiter //

      DROP TABLE if exists test //

      CREATE TABLE test(

      id int(11) NULL

      ) //

      drop procedure if existssp1 //

      create procedure sp1(in p int)

      comment 'insert into a int value'

      begin

      declare v1 int;

      set v1 = p;

      insert into test(id) values(v1);

      end

      //

      drop procedure if exists sp2 //

      create procedure sp2(out p int)

      begin

      select max(id) into p from test;

      end

      //

      drop procedure if exists sp6 //

      create procedure sp6()

      begin

      select * from test;

      end//

      */

      public static void main(String[] args) {

      //callIn(111);

      //callOut();

      callResult();

      }

      /**

      * 調用帶有輸入參數的存儲過程

      * @param in stored procedure input parametervalue

      */

      public static void callIn(int in){

      //獲取連接

      Connection conn = ConnectDb.getConnection();

      CallableStatement cs = null;

      try {

      //可以直接傳入參數

      //cs = conn.prepareCall("{call sp1(1)}");

      //也可以用問號代替

      cs = conn.prepareCall("{call sp1(?)}");

      //設置第一個輸入參數的值為110

      cs.setInt(1, in);

      cs.execute();

      } catch (Exception e) {

      e.printStackTrace();

      } finally {

      try {

      if(cs != null){

      cs.close();

      }

      if(conn != null){

      conn.close();

      }

      } catch (Exception ex) {

      ex.printStackTrace();

      }

      }

      }

      /**

      * 調用帶有輸出參數的存儲過程

      *

      */

      public static void callOut() {

      Connection conn = ConnectDb.getConnection();

      CallableStatement cs = null;

      try {

      cs = conn.prepareCall("{call sp2(?)}");

      //第一個參數的類型為Int

      cs.registerOutParameter(1, Types.INTEGER);

      cs.execute();

      //得到第一個值

      int i = cs.getInt(1);

      System.out.println(i);

      } catch (Exception e) {

      e.printStackTrace();

      } finally {

      try {

      if(cs != null){

      cs.close();

      }

      if(conn != null){

      conn.close();

      }

      } catch (Exception ex) {

      ex.printStackTrace();

      }

      }

      }

      /**

      * 調用輸出結果集的存儲過程

      */

      public static void callResult(){

      Connection conn = ConnectDb.getConnection();

      CallableStatement cs = null;

      ResultSet rs = null;

      try {

      cs = conn.prepareCall("{call sp6()}");

      rs = cs.executeQuery();

      //循環輸出結果

      while(rs.next()){

      System.out.println(rs.getString(1));

      }

      } catch (Exception e) {

      e.printStackTrace();

      } finally {

      try {

      if(rs != null){

      rs.close();

      }

      if(cs != null){

      cs.close();

      }

      if(conn != null){

      conn.close();

      }

      } catch (Exception ex) {

      ex.printStackTrace();

      }

      }

      }

      }

      /**

      *獲取數據庫連接的類

      */

      import java.sql.Connection;

      import java.sql.DriverManager;

      import java.sql.PreparedStatement;

      import java.sql.ResultSet;

      import java.sql.SQLException;

      import java.sql.Statement;

      class ConnectDb {

      public static Connection getConnection(){

      Connection conn = null;

      PreparedStatement preparedstatement = null;

      try {

      Class.forName("org.gjt.mm.mysql.Driver").newInstance();

      String dbname = "test";

      String url="jdbc:mysql://localhost/"+dbname+"?user=root&password=root&useUnicode=true&characterEncoding=8859_1";

      conn= DriverManager.getConnection(url);

      } catch (Exception e) {

      e.printStackTrace();

      }

      return conn;

      }

      }

      希望本文所述對大家的java程序設計有所幫助。

    【Java調用MySQL存儲過程并獲得返回值的方法】相關文章:

    Java怎么編寫Oracle存儲過程09-15

    java調用cmd命令01-29

    巧克力的存儲方法06-29

    java程序中如何調用linux命令08-27

    怎樣獲得Sun Java認證05-08

    恩施玉露的選購與存儲方法08-17

    MySQL導出導入SQL文件命令方法10-17

    關于編程之PHP常用MySql操作的方法06-26

    JAVA認證基礎知識:基于反射機制的服務代理調用09-20

    茉莉花茶的選購與存儲方法06-06

    主站蜘蛛池模板: 2048亚洲精品国产| 国产精品一级毛片无码视频| 四虎影永久在线观看精品 | 欧美精品在线免费| 久久国产精品成人免费| 久久久久久九九99精品| 无码日韩精品一区二区人妻| 99热热久久这里只有精品68| 99久久久精品免费观看国产| 亚洲日韩精品无码专区网站| 国产精品一香蕉国产线看观看| 精品三级在线观看| 国内揄拍高清国内精品对白| 亚洲国产精品综合久久网络| 精品乱子伦一区二区三区高清免费播放| 国产在线不卡午夜精品2021| 国产精品涩涩涩视频网站| 日产精品久久久久久久性色| 午夜精品久久久久久影视777| 国产日韩久久久精品影院首页| 久久99国产精品一区二区| 97视频在线观看这里只有精品| 日韩精品乱码AV一区二区| 亚洲精品国产高清不卡在线| 女人高潮内射99精品| 精品无码三级在线观看视频 | 成人午夜精品网站在线观看| 精品一区二区三区自拍图片区| 日韩精品真人荷官无码| 无码国产精品一区二区免费3p| 亚洲一区无码精品色| 亚洲精品视频在线看| 综合精品欧美日韩国产在线| 尤物TV国产精品看片在线| 无码精品第一页| 亚洲午夜福利精品久久| 亚洲精品成人片在线观看| 人妻少妇看A偷人无码精品| 欧美日韩精品久久久免费观看| 久久久99精品一区二区| 欧美精品色婷婷五月综合|