| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 어노테이션
- springmvc
- c:if
- @
- frontController
- 의존주입
- jointpoint
- application.properties
- SpringBoot
- PointCut
- Java
- 생성자주입
- 바인딩변수
- AOP
- 서비스레이어
- 스프링
- @RequestMapping
- after-throwing
- MVC
- @Valid
- spring
- 유효성검사
- 비즈니스레이어
- springjdbc
- .xml
- @ResponseBody
- @RequestParam
- gradle
- Model
- produces
- Today
- Total
메모장
JDBC 본문
JAVA와 DATABASE 를 Connection 한다 ~! ----> JDBC 라고 부른다.
JDBC의 4가지 순서에 대해 알아보자
1. JAVA와 DB를 연결해줄 자원(resouce)을 가진 클래스
// (== 드라이버 : 서로 다른 시스템, 이종기기 간의 연결을 위해 필요한 객체 ) 를
메모리로 불러와야한다 == 이것을 load(적재)한다고 한다. ex)로딩중 할때 그 로딩 !
package class01;
import java.sql.Connection; // 자바에서 기본제공은 되어있으나
// 어떤 패키지 안에 저장이 되서 실행되고 있는데 그 패키지가 sql
import java.sql.DriverManager; // 처음시작이 java. 가 아니면 외부에서 가져온것 이다.
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
import class04.StudentVO;
public class Test01 {
public static void main(String[] args) {
final String driverName_MySQL = "com.mysql.cj.jdbc.Driver";
// final String driverName_Oracle = "oracle.jdbc.driver.OracleDriver";
try {
Class.forName(driverName_MySQL);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

2. DB와 연결 ------> Connection 객체가 필요하다 !
// 2. DB와 연결
final String url_MySQL="jdbc:mysql://localhost/hong";
//final String url_Oracle="jdbc:oracle:thin:@localhost:1521:xe";
final String userName="root";
final String passwd="1234";
Connection conn=null;
try {
// DriverManager.getConnection(url, userName, passWord);
conn=DriverManager.getConnection(url_MySQL, userName, passwd);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
- conn 객체는 DB와의 연결통로 역할 ! // getConnection의 인자 3가지
1. url(데이터베이스에 직접적으로 연결할 수 있는 역할을 한다.) ---> "jdbc:mysql://localhost/DB명"
// "jdbc:oracle:thin:@localhost:1521:xe" -> 이건 오라클 url
2. userName ---> "root"
3. passWord ---> 1234

3. DB에 데이터를 작성하거나(write), DB의 데이터를 받아오거나(read) 할수 있음
----> Statement 객체를 생성하고, 사용하는것이 목표 ! 3번이 중요
이부분에서 INSERT,SELECTALL,SELECTONE, UPDATE, DELETE 다 해볼 수 있다.
// 작성
Statement stmt=null;
/// ---------- VIEW 시작
Scanner sc=new Scanner(System.in);
System.out.println("학생의 이름을 입력하세요.");
String studentName=sc.next();
System.out.println("학생의 점수를 입력하세요.");
int studentScore=sc.nextInt();
/// ---------- VIEW 끝
/// ---------- CONTROLLER 시작
// CTRL 입장 : "M의 DAO의 CRUD 메서드의 인자는 VO인데 ,,, 나도 VO로 주면 좋을거 같다 ..."
StudentVO sVO = new StudentVO(0,studentName,studentScore);
/// ---------- CONTROLLER 끝
/// ---------- MODEL 시작
// final String sql_INSERT="INSERT INTO STUDENT (NAME,SCORE) VALUES('"+studentName+"',"+studentScore+");";
final String sql_INSERT="INSERT INTO STUDENT (NAME,SCORE) VALUES('"+sVO.getName()+"',"+sVO.getScore()+");";
// 보통 WHERE 절 뒤에는 PK를 많이 쓴다 조건으로
try {
stmt=conn.createStatement(); // 만들고 // statement 가 read,write를 제공해주는 것
stmt.executeUpdate(sql_INSERT); // 사용
// Query -> SELECT // 테이블에 영향을 주는 쿼리문
// Update -> INSERT,UPDATE,DELETE // 테이블에 영향을 주지 않는 쿼리문
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

3. 이번엔 SELECT 를 사용 해보자 . READ 읽어오기
// 읽어오자
Statement stmt=null;
// VIEW랑 CTRL는 insert를 위해 있었던 친구라 없어도 된다.
ResultSet rs=null;
final String sql_SELECTALL="SELECT NUM,NAME,SCORE FROM STUDENT;";
// 보통 WHERE 절 뒤에는 PK를 많이 쓴다 조건으로
try {
stmt=conn.createStatement();
rs=stmt.executeQuery(sql_SELECTALL);
while(rs.next()) {
// ---- ctrl 시작
StudentVO sVO=new StudentVO(rs.getInt("NUM"),rs.getString("NAME"),rs.getInt("SCORE"));
// 학생정보줘
// ---- ctrl 끝
// ---- VIEW 시작
//RS는 M꺼라 V가 가지고 있으면 안된다 그것을 C가 해야된다 .
// System.out.println(rs.getInt("NUM"));
// System.out.println(rs.getString("NAME"));
// System.out.println(rs.getInt("SCORE"));
System.out.println(sVO);
System.out.println();
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

4. DB와 연결해제 ★ (컴퓨터가 메모리를 계속 계속 잡아먹어서 갑자기 꺼진다. 반드시 연결해제를 해준다. )
try {
stmt.close(); // 만든거 역순으로
conn.close(); // 닫고 다시 닫고 나와야 함
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(" 로그: 프로그램 종료");
주의 ! close 를 깜빡하지 말고 해줘야 하는데 close하는 순서는 방문을 여는 순서라고 생각하면 된다 .
방문 1 을 열고 -> 방문 2를 열었을때 !! 닫을 때는 역순으로 방문2를 닫고 나오고 그다음 방문1을 닫는다.

JDBC 순서 4가지에 대해 배워보았다
'DB > 개념정리' 카테고리의 다른 글
| JDBC - 임시 멤버 변수 구현 (0) | 2024.04.10 |
|---|---|
| JDBC PrepareStatement (0) | 2024.04.10 |
| MySQL 날짜 , 날짜함수 (0) | 2024.04.10 |
| JDBC - MVC패턴으로 만들기(웹크롤링) (0) | 2024.04.10 |
| DB ,DBMS (0) | 2024.04.10 |