아무튼 개발
article thumbnail
반응형

 

DB를 연결하는 방법은 크게 3단계가 있다.

1. DriverManager가 Connection을 생성한다.

2. Connection이 Statement를 생성한다.

3. Statement가 query를 실행한다.

 

순서에 따라 실행 과정을 살펴보자.

 

Connection 연결
	private static Connection dbConn;
	
	public static Connection getConnection() {		
		if(dbConn==null) {			
			try {
				String url = "jdbc:oracle:thin:@localhost:1521";
				String user = "aa";
				String pwd = "a123";				
				Class.forName("oracle.jdbc.driver.OracleDriver");	
				dbConn = DriverManager.getConnection(url, user, pwd);	
			} catch (Exception e) {
				System.out.println(e.toString());
			}			
		}
		return dbConn;		
	}

(한눈에 보기 위해 줄마다 간격은 삭제했다.)

 

dbConn을 담을 수 있는 데이터타입 Connection이다.

getConnection 메서드를 통해 연결하도록 한다.

 

try문은 접속정보를 포함한다.

url 혹은 forName 부분은 각자 지정한 이름에 따라 달라질 수 있다.

 

DriverManager로 생성할 수 있도록 dbConn에 입력해 준다.

 

public static void close() {		
		if(dbConn!=null) {			
			try {
				if(!dbConn.isClosed()) {
					dbConn.close();
				}								
			} catch (Exception e) {
				System.out.println(e.toString());
			}			
		}
		dbConn=null;		
	}

close 메서드를 만들었다.

 

dbConn 값이 남아있다면 없애도록 한다.

값이 있을 경우, 두 번째 연결 시 안될 수 있으며 아답터 오류가 날 가능성이 있다.

 

 

또 다른 클래스에서 진행하였다.

public class Test1 {
	public static void main(String[] args) {		
		Connection conn = DBConn.getConnection();		
		if(conn==null) {
			System.out.println("DB 연결 실패");
			System.exit(0);
		}		
		System.out.println("DB 연결 성공");
		DBConn.close();
	}
}

 

메인절에서 위에 만든 getConnection 메서드를 실행한다.

 

if문을 통해 값이 null이면 성공이라는 메시지를 출력시키고

종료한다.

 

추후에 데이터베이스 연결이 잘 안 될 때

해당 클래스에서 재확인하기도 한다.

 

 

Insert, update , delete, select
try {			
			Statement stmt = conn.createStatement();
			String sql;

메인절에서 위에부터 입력한 코딩과 같이

conn 선언과 if(conn=null)의 조건문을 입력해주고 난 후

try문을 통해 입력한다.

 

밑에 예시들은 모두 동일하게 try~catch문 내에서 진행되는 거니

내용 부분만 입력하는 점 참고!

  • insert
//insert
			sql = "insert into score (hak,name,kor,eng,mat) ";
			sql+= "values ('111','aaa',40,80,70)";
			
			int result = stmt.executeUpdate(sql);
			
			if(result==1) {
				System.out.println("추가 성공");
			}
			stmt.close();

sql 문은 " " 큰따옴표 안에 작성한다.

첫 번째 줄이 길어지면 다음 줄에서 sql+=로 연결하여 그대로 작성할 수 있다. (누적이기 때문에)

 

executeUpdate 괄호에 sql을 입력하며

실행이 되면 값 1을 return 하며, 실행을 못했을 시 0이다.

 

따라서 다음 if문의 result==1은 실행에 성공했다는 것이다.

 

  • update
//update
			sql = "update score set name='bbb',kor=100,eng=100,mat=100 ";
			sql+= "where hak='111'";
			
			int result = stmt.executeUpdate(sql);
			
			if(result==1) {
				System.out.println("수정 성공");
			}

위와 마찬가지로 update문을 입력해 준다.

hak=111이라는 조건을 통해 insert문에서 입력한 값을 update 해줄 것이다.

 

그 밑의 실행과 출력문은 동일하다.

 

  • delete
//delete
			sql = "delete score where hak=111";
			
			int result = stmt.executeUpdate(sql);
			
			if(result==1) {
				System.out.println("삭제 성공!!");
			}

delete문을 입력해 주며, 값을 지울 것이다.

 

밑의 내용 방법은 똑같다.

 

  • select
//select
			ResultSet rs = null;
			
			sql = "select hak,name,kor,eng,mat from score";			
			rs = stmt.executeQuery(sql);
			
			String hak,name;
			int kor,eng,mat;
			
			while(rs.next()) {				
				hak = rs.getString("hak");
				name = rs.getString(2);
				kor = rs.getInt("kor");
				eng = rs.getInt(4);
				mat = rs.getInt("mat");
				
				System.out.printf("%5s %6s %4d %4d %4d\n",hak,name,kor,eng,mat);
			}			
			rs.close();
			stmt.close();

resultset은 select의 결괏값을 받아오는 객체이다.

select문은 위와 같이 입력해 준다.

 

검색할 컬럼의 타입을 입력해 주며

while문을 통해 입력된 값들 하나하나를 next()로 받는다.

getSting 또는 getInt의 괄호에는 컬럼명을 써줘도 되지만, 입력한 컬럼의 일련번호를 입력해도 된다.

name과 eng는 순서번호를 입력하였다. (물론 실무에서는 정확성을 위해 숫자를 주로 사용하지는 않는다)

 

마지막에는 close()로 닫아줘야 나중에 에러가 나지 않는다.

 

 

 

 

#국비46일차

반응형
profile

아무튼 개발

@릴쥬

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...