亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

JAVA認證

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

時間:2024-10-14 13:08:34 JAVA認證 我要投稿
  • 相關推薦

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

  本文yjbys小編為大家主要介紹了Java調用MySQL存儲過程并獲得返回值的方法,實例分析了java實現(xiàn)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();

  //循環(huán)輸出結果

  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存儲過程并獲得返回值的方法】相關文章:

MySQL導出導入SQL文件命令方法06-29

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

Java獲取當前的系統(tǒng)時間的方法11-03

Word2000用Office助手獲得幫助方法02-22

Java與Java web有什么不同01-22

原生ajax調用數據實例簡單講解07-19

房地產風險分析的一般過程和方法10-21

關于OrCad原理圖設計中模塊化的調用07-12

聲母發(fā)音過程06-25

Java代碼的基本知識09-03