1. 程式人生 > >MySql儲存過程中傳參和不傳參以及java中呼叫程式碼

MySql儲存過程中傳參和不傳參以及java中呼叫程式碼

資料庫表結構

這裡寫圖片描述

1.mysql不傳參寫儲存過程

create procedure product()   --  product為儲存過程名稱
begin

        select * from book;

end

呼叫此儲存過程為

CALL product

2.有傳參的儲存過程

CREATE PROCEDURE  updateInfo(

        in b_new_name VARCHAR(100),      --  傳入的欄位型別為VARCHAR

        in b_id BIGINT(20),

        out b_result_name
VARCHAR(100) -- 返回的欄位型別為VARCHAR ) BEGIN UPDATE book t SET t.NAME= b_new_name WHERE t.book_id= b_id;
SELECT b.`name` from book b WHERE b.book_id=b_id INTO b_result_name; -- into到傳入引數只有才可以在外部拿到值 End

3.使用java程式調帶引數和不帶引數的儲存過程

import java.sql.Connection;
import java.sql.DriverManager;
import
java.sql.*; public class Main { public static void main(String[] args) { // selectDateFromMysql(conn()); //連線資料庫 //unParamCall(); //執行無參儲存過程 paramCall(); //執行有引數儲存過程 } /** * 執行有引數儲存過程 */ private static void paramCall() { Connection con = null; CallableStatement csm = null
; ResultSet res = null; try { //建立一個一個數據庫連線 con = conn(); //執行儲存過程 csm = con.prepareCall("{ call updateInfo(?,?,?)}"); //傳入引數和輸出引數萬用字元,一種有三個引數 csm.setString(1, "語文"); //第一個引數為 字串型別 語文 csm.setInt(2,2); //第二個引數為整型,Index 為2 csm.registerOutParameter(3,Types.VARCHAR); //第三個引數為輸出結果,為資料庫表中列的型別,即資料庫的型別,Types類中有所有資料庫的常見型別 csm.execute(); System.out.println(csm.getString(3)); //輸入執行的第三個引數,為結果引數,打印出來 csm.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 執行無參儲存過程 */ private static void unParamCall() { Connection con = null; CallableStatement csm = null; ResultSet res = null; Book b = new Book(); try { //建立一個一個數據庫連線 con = conn(); //執行儲存過程 csm = con.prepareCall("{ call product()}"); //儲存過程和查資料區別在這裡 res = csm.executeQuery(); while (res.next()) { b.setId(res.getInt(1)); b.setName(res.getString("name")); b.setNumber(res.getInt(3)); b.setDetail(res.getString(4)); System.out.println(b.toString()); } res.close(); csm.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } finally { } } /** * 執行資料庫連線和簡單查詢 */ private void selectDateFromMysql(Connection con) { Statement stm = null; String sql = null; ResultSet res = null; Book b = new Book(); try { stm = con.createStatement(); sql = "select * from book"; res = stm.executeQuery(sql); while (res.next()) { int id = res.getInt("book_id"); b.setId(id); String name2 = res.getString("name"); b.setName(name2); int number = res.getInt(3); b.setNumber(number); String detail = res.getString(4); b.setDetail(detail); System.out.println(b.toString()); } res.close(); stm.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 建一個數據庫連線 * * @return */ private static Connection conn() { String sql = null; String name = "root"; String pass = "123456"; String url = "jdbc:mysql://127.0.0.1:3306/ssm?useUnicode=true&characterEncoding=utf8"; Connection con = null; try { System.out.println("開始進行登陸操作*************"); con = DriverManager.getConnection(url, name, pass); } catch (Exception e) { e.printStackTrace(); } return con; } }