Oracle數據庫連接、存儲過程及調用


Oracle數據庫連接、存儲過程及調用

1. 定義一個存儲過程

create or replace procedure getuser(eid in number, na out varchar, em out varchar)
as
begin
  select username, email into na, em from T_USER where userid = eid;
  dbms_output.put_line(na);
end;

2. 應用程序連接數據庫

package utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * 連接oracle數據庫工具類
 * @author 賓桀鋒
 * @date 2017年8月13日
 */
public class JDBCUtils {

	private static String driver = "oracle.jdbc.OracleDriver";
	private static String url = "jdbc:oracle:thin:@192.168.2.152:1521:orcl";
	private static String username= "binjf";
	private static String password = "123456";
	
	//注冊數據庫的驅動
	static{
		try {
			Class.forName(driver);
		} catch (ClassNotFoundException e) {
			throw new ExceptionInInitializerError(e);
		}
	}
	
	//獲取數據庫連接
	public static Connection getConnection(){
		try {
			return DriverManager.getConnection(url, username, password);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	//釋放數據庫的資源
	public static void release(Connection conn, Statement st, ResultSet rs){
		if(rs != null){
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			} finally {
				rs = null;
			}
		}
		if(st != null){
			try {
				st.close();
			} catch (SQLException e) {
				e.printStackTrace();
			} finally {
				st = null;
			}
		}
		if(conn != null){
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			} finally {
				conn = null;
			}
		}
	}
}

3. 調用存儲過程

package oracle;

import java.sql.CallableStatement;
import java.sql.Connection;
import oracle.jdbc.internal.OracleTypes;
import org.junit.Test;
import utils.JDBCUtils;

/**
 * 測試存儲過程類
 * @author 賓桀鋒
 * @date 2017年8月13日
 */
public class TestProcedure {

	@Test
	public void testProcedure(){
		String sql = "{call getuser(?,?,?)}";
		
		Connection conn = null;
		CallableStatement call = null;
		try{
			//得到一個連接
			conn = JDBCUtils.getConnection();
			//通過連接創建出statement
			call = conn.prepareCall(sql);
			
			//對於in參數,賦值
			call.setInt(1, 5);
			
			//對於out參數,申明
			call.registerOutParameter(2, OracleTypes.VARCHAR);
			call.registerOutParameter(3, OracleTypes.VARCHAR);
			
			//執行調用
			call.execute();
			
			//取出結果
			String username = call.getString(2);
			String email = call.getString(3);
			
			System.out.println("用戶名:" + username + "  郵箱:" + email);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JDBCUtils.release(conn, call, null);
		}
	}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM