티스토리 뷰

Web(국비)/DB연결

DB연결1

Xion 2019. 10. 27. 15:36
package com.util;
//DB연결 과정이 부하가 가장 크기 때문에
//한 번 연결된 객체를 계속 사용하는 것이 좋다 

import java.sql.Connection;
import java.sql.DriverManager;

public class dbconn {
	private static Connection dbConn;
	//자동으로 null로 초기화
	
	
	//연결수행 메소드 하나 만들고 계속 사용하기 위해 static메소드로 선언
	public static Connection getConnection()
	{
		//try ~ catch대신
		//getConnection()메소드 명 뒤에 
		//throws Exception  (SQLException,ClassNotFound)
		//을 사용하면 try-catch문을 사용하지 않아도 된다ㅏ.
		//단,throws Exception을 사용할 경우 예외가ㅏ 발생하면
		//프로그램 자체 종료가 된다.
		
		//하지만 try - catch문을 사용할 경우 프로그램이 종료되는 것은 아니며
		//연결 실패에 대한 원인 분석을 할 수 있다.
		//또한 이 오류가 발생되었을 경우 클라이언트에게 별도의 안내를 할 수도 있게 된다.
		
		
		//==dbConn이 채워져 있으면 새로운 dbConn을 만들지 않겠다는 의미
		if(dbConn==null)
		{
			try {
				String url = "jdbc:oracle:thin:@localhost:1521:xe";
				//thin : 드라이버
				//xe는 Express Edition을 사용할 경우 명시하게 되는 SID지만
				//Standatd Edition이나 Enterprise Edition등
				//Connection을 사용하기 위해서는 java.sql.Connection 을 임포트 해주어야 한다.
				//localhost는 위치를 말한다. 다른PC이거나 할 경우는 IP를 입력해 주고 1521은 해당포트이며 ORA92는 오라클의 SID이다. 
				
				String user = "scott"; //오라클 사용자 계정
				String pwd  = "tiger"; //오라클 패스워드
				
				Class.forName("oracle.jdbc.driver.OracleDriver");
				
				//드라이버 매니저는 Class.forName() 메소드를 통해서 생성된다.
				//DriverManager 클래스는 JDBC 드라이버를 통하여 Connection을 만드는 역할
				//OracleDriver 클래스에 대한 객체 생성
				// OracleDriver치고 컨트롤 + 스페이스
				//Class.forName으로 JDBC 드라이버를 로딩해 준다. 
				//드라이버가 없을 경우 이 부분은 ClassNotFoundException 핸들링을 해주어야 하므로 try-catch문으로 감싸주어야 한다.
				
				// -- 여기까지는 연결 설정 부분  -- 아래부터 실제 연결부분 -- //
				
				dbConn = DriverManager.getConnection(url,user,pwd);
				//오라클 서버 실제 연결
				////커넥션을 만든 후에 DriverManager의 getConnection을 통해서 DB를 연결
				//DriverManager를 사용하려면 java.sql.DriverManager를 import
			
				//getConnection은 클래스 메소드인걸 알수있음  " . " 으로인해
				
			
			}catch(Exception e)// OR SQLException , ClassNotFoundException사용 가능
			{
				System.out.println(e.toString());
			}
		}
		return dbConn;
	}
	
	//위와 다른 별개의 메소드라고 생각  1번째 case :  학원에 직접적인 경로를 설정할 때 2번째 cas : 매개변수로 받아서 설정할때
	//메소드 오버로딩 ( 파라미터가 기존 메소드랑 다르게 받기 때문에 ) 
	public static Connection getConnection(String url , String user , String pwd)
	{
		if(dbConn==null)
		{
			try {
				Class.forName("oracle.jdbc.driver.OracleDriver");
				dbConn=DriverManager.getConnection(url,user,pwd);
				
			}catch(Exception e)
			{
				System.out.println(e.toString());
			}
		}
		return dbConn;
	}
	
	public static void close() 
	{
		if(dbConn != null)
		{
			try
			{
				if(!dbConn.isClosed()) // isClosed() 메소드를 통해 연결 상태 확인 (연결이 살아있으면 true)
				{
					dbConn.close(); // close()메소드로 통해 연결 종료
				}
				
			}catch(Exception e)
			{
				System.out.println(e.toString());
			}
		}
		
		dbConn = null;
	}
}

'Web(국비) > DB연결' 카테고리의 다른 글

DB연결-WebApp09  (0) 2019.10.28
DB-연결 WebApp08  (0) 2019.10.28
[Java] score DB연결  (0) 2019.10.28
DB연결2  (0) 2019.10.25
DB연결  (0) 2019.10.25