程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> java調用mysql存儲過程實例分析

java調用mysql存儲過程實例分析

編輯:更多關於編程

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

      數據庫的測試代碼如下 :

      1、新建表test

      ?

    1 2 3 4 5 create table test( field1 int not null ) TYPE=MyISAM ; insert into test(field1) values(1);

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

      ?

    1 2 3 -- 刪除儲存過程 delimiter // -- 定義結束符號 drop procedure p_test;

      3、mysql存儲過程定義:

      ?

    1 2 3 4 5 6 create procedure p_test() begin declare temp int; set temp = 0; update test set field1 = values(temp); end

      4、調用方法:

      ?

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 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程序設計有所幫助。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved