프로그래밍/JAVA

[유튜브 : 뉴렉처님 강의] JDBC 1~ 12강 CRUD

나도 오늘부터 개발자?! 2022. 10. 19. 12:34

JDBC(Java Database Connectivity)란?

자바와 각 DB에 연결을 할때 DB마다 API가 달라서 연결하는 방식이나 사용하는 방법이 서로 조금씩 다른데 이러한 불편한 부분을 JDBC를 통해 각 DB에 맞춰 언어를 변경을 해줌으로 사용하기 굉장히 편리해집니다. (JDBC만 알고 사용하면 모든 DB를 사용 할 수 있다)
 

이용방법 : DBMS 설치 →  JDBC 드라이버 로드하기 → JDBC 연결하기 → JDBC SQL 실행하기

1.DBMS 설치 : 원하는 DB를 설치해 준다
2.설치한 DB의 JDBC 드라이버를 설치 후 로드해준다. 
 
3.JDBC 연결하기
Class.forName(”사용 할 DB드라이버 연결”) - 메모리상에 드라이버 구동
Connection con = DriverManager.getConnection(url, “DBid”, “DBpassword”); - 연결도구
Statement st = con.createStatement(); - 실행도구 
ResultSet rs = st.executeQuery(sql); - 결과집합 패치도구

 

4. SQL 실행하기

if(rs.next()) { - 각 컬럼을 한 줄식 가져오면서 한칸식 내려감
	String title = rs.getString(”TITEL”); - 각 컬럼을 내릴때마다 컬럼에 저장되어 있는 TITLE을 
    name에 저장, getString안의 title(컬럼명)은 대소문자 둘다 상관없음 
    
	System.out.println(title); - 저장된 title을 출력
} 
rs.close();
st.close();
con.close();
사용후에는 꼭 close를 해주자 그렇지 않으면 다른쪽에서 자원을 빠르게 사용하는데 어려움이 생길수 있다.
 

 

 
문제1)

답:

더보기

while(rs.next()) {

  int id = rs.getInt(”id”);
  String title = rs.getString(”title”);
  String writerld = rs.getString(”writerld”);
  Date regDate = rs.getDate(”regdate”);
  String content = rs.getString(”content”);
  int hit = rs.getInt(”hit”);
 
System.out.println(id, title, writerld, regDate, content, hit); 
 }
}

 

 
문제 2)

답:

더보기

String sql = “SELECT * FROM NOTICE WHERE HIT > 10”;

 

8 ~ 9강) INSERT문 (생성)

DB에 데이타를 입력 하기 위한 쿼리문 작성 방법
시퀀스 = 순차적으로 증가하는 번호를 자동적으로 생성하며, 그것을  반환하는 데이터베이스 객체를 의미 합니다. (유일한 값을 생성해준다)
예: 1, 2, 3, 4, 5 ....
테이블에 데이터를 저장 할때마다, 자동으로 각 로우를 식별할 수 있게 시퀀스 값이 할당되어 저장 됩니다
MySQL에 Auto_increment와 유사합니다.
 
TIP: SELECT 문이 아니면 결과집합이 필요가 없다 그래서 
executeQuery가 아니라 executeUpdate를 사용 합니다
insert, update, delete = executeUpdate를 사용 합니다.
// 사용자가 입력한 값을 변수에 담기위해 변수를 생성

String title = "";
String writerID = "";
String content = "";
String files = "";


String sql = "INSERT INTO notice (" + " title," + " writer_id," + "
content," + " files" + ") VALUES (?, ?, ?, ?)";
// ?를 넣는 이유는 보안문제가 있기 때문에 변수를 매핑해주는 것이다.

Class.forName(”사용 할 DB드라이버 연결”) - 메모리상에 드라이버 구동

Connection con = DriverManager.getConnection(url, “DBid”, “DBpassword”); - 연결도구
Statement st = con.prepareStatement(sql); - 미리 sql문을 준비해서 VALUES안의 ? 값을 넣어주기 위해  


// 시퀄문 준비완료
st.setString(1, title);
st.setString(2, writerID);
st.setString(3, content);
st.setString(4, files);

// 실행문 
//prepare 사용 할 때는 절대 SQL 넣지말기( 안 그럼 이해 할수 없는 오류가 난다)
int result = st.executeUpdate();

System.out.println(result);

 

 

10 ~ 11강) UPDATE문 (수정)

 

// 사용자가 입력한 값을 변수에 담기위해 변수를 생성

String title = "";
String writerID = "";
String content = "";
String files = "";
int id = ""; // DB에 저장되어 있는 아이디 번호 가져오기

String sql = "UPDATE notice " +
    		"SET" + " TITEL=?," + " CONTENT=?, " + " FILES=?" + "WHERE ID=?";
// ?를 넣는 이유는 보안문제가 있기 때문에 변수를 매핑해주는 것이다.

Class.forName(”사용 할 DB드라이버 연결”) - 메모리상에 드라이버 구동
Connection con = DriverManager.getConnection(url, “DBid”, “DBpassword”); - 연결도구
Statement st = con.prepareStatement(sql); - 미리 sql문을 준비해서 VALUES안의 ? 값을 넣어주기 위해  


// 시퀄문 준비완료
st.setString(1, title);
st.setString(2, content);
st.setString(3, files);
st.setINT(4, id);

// 실행문 
//prepare 사용 할 때는 절대 SQL 넣지말기( 안 그럼 이해 할수 없는 오류가 난다)
int result = st.executeUpdate();

System.out.println(result);

 

 

12 강) DELETE문 (삭제)

// 사용자가 입력한 값을 변수에 담기위해 변수를 생성

int id = ""; // DB에 저장되어 있는 아이디 번호 가져오기

String sql = "DELETE notice WHERE ID=?";
// ?를 넣는 이유는 보안문제가 있기 때문에 변수를 매핑해주는 것이다.

Class.forName(”사용 할 DB드라이버 연결”) - 메모리상에 드라이버 구동
Connection con = DriverManager.getConnection(url, “DBid”, “DBpassword”); - 연결도구
Statement st = con.prepareStatement(sql); - 미리 sql문을 준비해서 VALUES안의 ? 값을 넣어주기 위해  


// 시퀄문 준비완료
st.setINT(1, id);

// 실행문 
//prepare 사용 할 때는 절대 SQL 넣지말기( 안 그럼 이해 할수 없는 오류가 난다)
int result = st.executeUpdate();

System.out.println(result);

 

 예외처리 / 생성자

 

CRUD 란?

CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능을 묶어서 일컫는 말이며, 사용자 인터페이스가 갖추어야 할 기능(정보의 참조/검색/갱신)을 가리키는 용어로도 사용 됩니다.

 

Create -> SQL에서는 INSERT (생성)

Read -> SQL에서는 SELECT (읽기, 조회)

Update -> SQL에서도 UPDATE (수정)

Delete -> SQL에서도 DELETE (삭제)

 

'프로그래밍 > JAVA' 카테고리의 다른 글

자바의 정석 6장 - 객체지향  (0) 2022.11.03
자바 객체지향(2)  (0) 2021.12.29
자바 객체지향 (1)  (0) 2021.12.28
자바의정석 Chap 5 배열 두둥!  (0) 2021.12.22
자바 조건문과 반복문  (0) 2021.12.20