Web(국비)/DB연결
DB연결1
by Xion
2019. 10. 27.
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;
}
}