標籤:java 預存程序
在其他地方我已經寫過一個mySql預存程序的簡單實現http://jianboli.blog.51cto.com/12075002/1884019
這裡是java調用預存程序。
package com.lijianbo.procedure;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.DriverManager;import java.sql.Types;/** * @author * 預存程序MySQL */public class ProcedureMySql { public static final String DRIVER_CLASS = "com.mysql.jdbc.Driver"; public static final String URL = "jdbc:mysql://localhost:3306/test"; public static final String USERNAME = "root"; public static final String PASSWORD = "root"; public static void main(String[] args) throws Exception { // test1(); // test2(); testIdAdd(); } public static void test1() throws Exception { Class.forName(DRIVER_CLASS); Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD); String sql = "{CALL test1(?)}"; //調用預存程序 CallableStatement cstm = connection.prepareCall(sql); //執行個體化對象cstm cstm.setString(1, "李"); //預存程序輸入參數 cstm.execute(); // 執行預存程序 cstm.close(); connection.close(); } /** * 查詢總的價格 * getTotalByUser2 * call getTotalByUser2(1, true, @total); -- 加稅 *select @total; * @throws Exception */ public static void test2() throws Exception { Class.forName(DRIVER_CLASS); Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD); String sql = "{CALL getTotalByUser2(?,?,?)}"; //調用預存程序 CallableStatement cstm = connection.prepareCall(sql); //執行個體化對象cstm cstm.setInt(1, 1); //設定第一個傳入參數 cstm.setBoolean(2, true); //設定第二個傳入參數 cstm.registerOutParameter(3, Types.DECIMAL); // 設定傳回值類型 即傳回值 cstm.execute(); // 執行預存程序 System.out.println(cstm.getString(3)); cstm.close(); connection.close(); } /** *id自增 * getTotalByUser2 * call getTotalByUser2(1, true, @total); -- 加稅 *select @total; * @throws Exception */ public static void testIdAdd() throws Exception { Class.forName(DRIVER_CLASS); Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD); String sql = "{CALL test1(?)}"; //調用預存程序 CallableStatement cstm = connection.prepareCall(sql); //執行個體化對象cstm cstm.setString(1, "測試"); //設定第一個傳入參數 cstm.execute(); // 執行預存程序 cstm.close(); connection.close(); } }
預存程序既可以在java中調用,也可以在觸發器中調用,欲知簡單實現。可以參考我的上一篇文章“觸發器的簡單實現”。
http://jianboli.blog.51cto.com/12075002/1884180
我這裡只是一個樣本,你可以參考裡面的注釋,具體預存程序的名字要根據你自己寫的來修改。
時間:2016年12月20日16:59:13
本文出自 “JianBo” 部落格,請務必保留此出處http://jianboli.blog.51cto.com/12075002/1884370
java調用預存程序