12월 2일 시험 요약

안효빈·2022년 12월 2일
4

개인 공부

목록 보기
35/36

커넥션 연결하는법

Class.forName("oracle.jdbc.driver.OracleDriver");
  1. 드라이버가 있는 클래스를 불러옴(내장돼있던게 아니라 따로 다운로드받은거라 저렇게 쓰는거)
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", USER, PASS)
  1. 커넥션을 만든다(USER와 PASS는 각각 오라클(DB) 사용자 계정 이름과 비밀번호)

Statement st = con.createStatement();
  1. 스테이트먼트를 만든다. (이래야 자바에서 쿼리문을 쓸수 있는거)
String query = "select emp_id, emp_name, email, salary" +
							" from employee where substr(emp_no, 8, 1) in (1)";
			
			ResultSet rs = st.executeQuery(query);
  1. exequteQuery로 쿼리문 돌려서 나온걸 자바 내에서 써먹어야 하므로 Resultset에 일단 담는다

  1. getString(컬럼번호)을 이용하여 갖고온다

보통 이렇게 담아오면서 빈에다가 넣어줌

주의사항(자기가 SELECT한거에 따라 몇번쨰 컬럼인지가 달라짐)

예를들어 테이블에 있는 컬럼 순서는 ID, PASSWORD, SALARY, ADDRESS, NAME 인데

SELECT로 ID, SALARY, NAME만을 가져왔으면

getString(3)에서는 NAME이 나옴


jdbc는 뭐냐

자바랑 데이터베이스(오라클)을 연결해서 자바로도 데이터베이스를 다룰수 있게 연결해주는 역할


PreparedStatement vs 그냥 Statement

PreparedStatement는 컴파일을 반복하지 않아 처리속도가 빠르고 DB에 부담이 덜 간다

  • 프리페어드는 변수를 직접 쿼리문에 넣지 않고 ?로 대신 입력해두었다가
    나중에 setString(몇번쨰물음표인지, 바꿀내용) 을 이용해서 물음표 안에 무엇이 들어갈지 따로 지정해준다.

executeQuery와 executeUpdate 는 뭐가 다른가

executeQuery는 말그대로 쿼리문을 실행하는것, SELECT문을 돌려서 결과를 가져오는데
이 결과를 ResultSet이라는 형태로 뱉도록 되어있기 떄문에 우리가 결과를 ResultSet으로 받아오는것

executeUpdate는 SELECT문 말고 다른 실행문에 이용됨, INSERT나 UPDATE등등...
그리고 해당 결과로 수행한 갯수만큼(테이블에 INSERT한 갯수, UPDATE한 갯수)들을 뱉음
즉, 몇줄 수행했는지를 리턴함(1, 2, 3, 4,... , 수행한 결과가 없으면 0)


CHAR는 뭐고 VARCHAR2는 뭔가

공통점 : 둘 다 문자열임, 자바로 따지면 String

CHAR는 고정형이라고하며 최대 2000바이트까지의 크기를 담을 수 있다, 한글은 우리가 사용하는 오라클 XE버전에서 1글자당 3바이트, 나머지 숫자나 영어는 1바이트씩

미리 선언해놓은 크기에서 모자라면 남은 크기는 공백으로 덧붙여서 선언한 크기만큼 완성시킴
EX) CHAR(12)에 '아' 라는 한글자만 넣으면 알아서 12바이트(한글4글자)가 될떄까지 붙임
'아' -> '아_ _ _ '

VARCHAR2는 가변형이라고 하며 최대 4000바이트까지 담아낼 수 있고 미리 선언한 크기보다 적게 입력하면 딱 입력한 만큼의 크기에서 끝남.(CHAR처럼 추가로 공백을 덧붙이는 경우 없음)


드라이버매니저(안나올가능성높음)

jdbc드라이버와 jdbc드라이버매니저의 차이

드라이버는 DB와 연결시켜주는 역할

드라이버 매니저는 드라이버들을 관리해주는 자바 내장 기능임


통째로외울부분

커넥션풀로 커넥션 만들고 거기 스테이트먼트 만들고 쿼리문 수행해서 리절트셋에 담기

profile
다들 화이팅

0개의 댓글