java調用預存程序

來源:互聯網
上載者:User

標籤: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調用預存程序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.