首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 呼叫 MySQL 預存程序完整範例

     編輯:Java 相關知識

Java 呼叫 MySQL 預存程序完整範例。本站提醒廣大學習愛好者:此文章僅供參考,不一定能完全符合您的需求。以下是完整範例正文


本文範例說明如何使用 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();

完整 Java 程式碼:

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();
    }

    /** 呼叫帶有輸入參數的預存程序 */
    public static void callIn(int in) {
        Connection conn = ConnectDb.getConnection();
        CallableStatement cs = null;
        try {
            cs = conn.prepareCall("{call sp1(?)}");
            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(?)}");
            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();
            }
        }
    }
}

/** 取得資料庫連線的類別 */
class ConnectDb {
    public static Connection getConnection() {
        Connection conn = 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