這篇文章運(yùn)用簡單易懂的例子給大家介紹在Java項(xiàng)目中如何實(shí)現(xiàn)調(diào)用Oracle數(shù)據(jù)庫的存儲過程,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
創(chuàng)新互聯(lián)建站10多年成都企業(yè)網(wǎng)站定制服務(wù);為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計(jì)及高端網(wǎng)站定制服務(wù),成都企業(yè)網(wǎng)站定制及推廣,對服務(wù)器托管等多個(gè)行業(yè)擁有多年建站經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。
Java調(diào)用Oracle存儲過程詳解
步驟:
1、編寫Oracle存儲過程
2、編寫數(shù)據(jù)庫獲取連接工具類
3、編寫簡單應(yīng)用調(diào)用存儲過程
實(shí)現(xiàn):
1、Oracle存儲過程:
/*測試表*/ create table test( id varchar2(32), name varchar2(32) ); /*存儲過程 插入數(shù)據(jù)*/ CREATE OR REPLACE PROCEDURE insert_procedure( PARA1 IN VARCHAR2, PARA2 IN VARCHAR2 ) AS BEGIN INSERT INTO test (id, name) VALUES (PARA1, PARA2); END insert_procedure; /*存儲過程 返回結(jié)果集*/ CREATE OR REPLACE PROCEDURE select_procedure( para_id IN VARCHAR2, name OUT sys_refcursor /* 這個(gè)sys_refcursor類型在SYS.STANDARD包中 */ ) AS BEGIN OPEN name FOR SELECT * FROM test WHERE id = para_id; END;
2、JDBC工具類
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DBUtil { public static final String DRIVER = "oracle.jdbc.driver.OracleDriver"; public static final String URL = "jdbc:oracle:thin:@localhost:1521/orcl"; public static final String USERNAME = "pfm"; public static final String PASSWORD = "pfm"; /** * 通過靜態(tài)代碼塊 注冊數(shù)據(jù)庫驅(qū)動(dòng) */ static { try { Class.forName(DRIVER); } catch (ClassNotFoundException e) { e.printStackTrace(); } } /** * 獲得Connection * * @return */ public static Connection getConnection() { Connection conn = null; try { conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); } catch (SQLException e) { e.printStackTrace(); } return conn; } /** * 獲得Statement * * @return */ public static Statement getStatement() { Statement st = null; try { st = getConnection().createStatement(); } catch (SQLException e) { e.printStackTrace(); } return st; } /** * 關(guān)閉ResultSet * * @param rs */ public static void closeResultSet(ResultSet rs) { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } } /** * 關(guān)閉Statement * * @param st */ public static void closeStatement(Statement st) { if (st != null) { try { st.close(); } catch (SQLException e) { e.printStackTrace(); } } } /** * 關(guān)閉Connection * * @param conn */ public static void closeConnection(Connection conn) { if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } /** * 關(guān)閉全部 * * @param rs * @param sta * @param conn */ public static void closeAll(ResultSet rs, Statement sta, Connection conn) { closeResultSet(rs); closeStatement(sta); closeConnection(conn); } }
3、調(diào)用存儲過程:
import java.sql.CallableStatement; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import oracle.jdbc.driver.OracleTypes; /** * 測試調(diào)用存儲過程 * */ public class StoredTest { public static void main(String[] args) { insert_call(); //select_call(); } /** * 執(zhí)行存儲過程 插入數(shù)據(jù) */ public static void insert_call() { Connection conn = DBUtil.getConnection(); PreparedStatement pst = null; CallableStatement proc = null; // 創(chuàng)建執(zhí)行存儲過程的對象 try { proc = conn.prepareCall("{ call insert_procedure(?,?) }"); proc.setString(1, "1"); // 設(shè)置第一個(gè)輸入?yún)?shù) proc.setString(2, "hello call"); // 設(shè)置第一個(gè)輸入?yún)?shù) proc.execute();// 執(zhí)行 } catch (SQLException e) { e.printStackTrace(); } finally { try { // 關(guān)閉IO流 proc.close(); DBUtil.closeAll(null, pst, conn); } catch (Exception e) { e.printStackTrace(); } } } /** * 執(zhí)行存儲過程 查詢數(shù)據(jù) */ public static void select_call() { Connection conn = DBUtil.getConnection(); CallableStatement stmt; try { stmt = conn.prepareCall("{ call select_procedure(?, ?) }"); // 用此調(diào)用方法不能實(shí)現(xiàn)多行語法 stmt.setString(1, "1"); stmt.registerOutParameter(2, OracleTypes.CURSOR); stmt.execute(); ResultSet rs = (ResultSet) stmt.getObject(2); while (rs.next()) { System.out.println(rs.getString("name")); } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.closeConnection(conn); } } }
關(guān)于在Java項(xiàng)目中如何實(shí)現(xiàn)調(diào)用Oracle數(shù)據(jù)庫的存儲過程就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
本文名稱:在Java項(xiàng)目中如何實(shí)現(xiàn)調(diào)用Oracle數(shù)據(jù)庫的存儲過程
轉(zhuǎn)載源于:http://jinyejixie.com/article10/ggspgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、網(wǎng)站內(nèi)鏈、響應(yīng)式網(wǎng)站、關(guān)鍵詞優(yōu)化、網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)