JAVA

자바 JDBC

커피마시기 2023. 10. 12. 23:20

 

 

 

 

JDBC

JDBC(Java Database Connectivity)는 Java 프로그램 내에서 DataBase로 접근 할 수 있도록 해주는 자바API이며

SQL을 이용하여 자바 프로그래밍 언어로 데이터베이스 응용 프로그래밍을 작성할 수 있도록 지원한다

 

 

 

JDBC 동작 흐름

JDBC API를 사용하기 위해서는 JDBC 드라이버를 먼저 로딩한 후에 데이터베이스와 연결하게된다

 

 

 

 

● JDBC 사용객체

DriverManager JDBC 드라이버를 통해서 커넥션을 만드는 역할
getConnection()메소드를 호출하여 Connection 객체를 반환한다
Connection DB의 연결정보를 담고 있는 객체
Statement 해당 DB에 SQL문을 전달하고 실행한 후 결과를 받아내는 객체
Result Set SELECT문을 사용시 조회된 결과가 반환되는 객체

 

 

 


 

활용해보기

 

1)  Dto 클래스 생성

변수들은 private으로 선언해주었고 getter, setter,  toString을 만들어주었다

public class Note1  {
	
	private int num;
	private int uniformnum;
	private String team;
	private String name;
	private String position;
	
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	public int getUniformnum() {
		return uniformnum;
	}
	public void setUniformnum(int uniformnum) {
		this.uniformnum = uniformnum;
	}
	public String getTeam() {
		return team;
	}
	public void setTeam(String team) {
		this.team = team;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPosition() {
		return position;
	}
	public void setPosition(String position) {
		this.position = position;
	}
	
	@Override
	public String toString() {
		return "Note1 [num=" + num + ", uniformnum=" + uniformnum + ", team=" + team + ", name=" + name + ", position="
				+ position + "]";
	}
}

 

 

 

 

2)  DB연결을 위한 메소드 생성

	Connection getConnection() throws Exception {
		
		Class.forName("com.mysql.cj.jdbc.Driver");
		
		String url = "jdbc:mysql://localhost:3306/mydb";
		String id = "root";
		String pwd = "1234";
		
		Connection conn = DriverManager.getConnection(url, id, pwd);
		
		return conn;
	}

 

 

 

 

3)  DB에 데이터 추가

	int insertInfo() throws Exception {
		Note2 n2 = new Note2();
		
		con = n2.getConnection();
		
		String sql = "insert into soccer values(null,?,?,?,?);";
		
		Note1 n1 = new Note1();
		
		n1.setUniformnum(7);  // setter 활용하여 필드의 변수에 값 추가
		n1.setTeam("토트넘");
		n1.setName("손흥민");
		n1.setPosition("FW");
		
		pstmt = con.prepareStatement(sql);
		
		pstmt.setInt(1, n1.getUniformnum()); // getter로 n1에 각각 들어있는 값 PreparedStatement에 담아주기
		pstmt.setString(2, n1.getTeam());
		pstmt.setString(3, n1.getName());
		pstmt.setString(4, n1.getPosition());
		
		int result = pstmt.executeUpdate(); // 결과 받기
		System.out.println("등록 성공");
		
		return result;
		
	}

 

 

 

 

4)  Main에서 메소드 호출

위의 메소드를 활용하여 손흥민, 김민재의 정보를 넣어주었고 값이 잘 들어갔는지 mysql에서 확인해보았다

public class Main {

	public static void main(String[] args) throws Exception {
		Note2 n2 = new Note2();
		
		n2.insertInfo();
        	}
}

mysql 출력 결과

 

5)  select를 활용하여 DB에 입력되어 있는 값 출력해보기

soccer 라는 table에 들어있는 num을 기준으로 내림차순으로 출력되도록 만들어보았고  list에 객체를 넣어주고 DB의 해당 정보를 n1 객체의 각각 변수에  담아주었다  

	List<Note1> selectInfo() throws Exception {
		Note2 n2 = new Note2();
		
		n2.getConnection();
		
		List<Note1> list = new ArrayList<>();
		
		con = n2.getConnection();
		String sql = "select * from soccer order by num desc;";
		pstmt = con.prepareStatement(sql);
		rs = pstmt.executeQuery();
		
		while(rs.next()) {
			Note1 n1 = new Note1();
			
			n1.setNum(rs.getInt(1));
			n1.setUniformnum(rs.getInt(2));
			n1.setTeam(rs.getString(3));
			n1.setName(rs.getString(4));
			n1.setPosition(rs.getString(5));
			
			list.add(n1);
		}
		return list;
	}

 

 

 

 

6)  Main에서 출력결과를 코드 작성

public class Main {

	public static void main(String[] args) throws Exception {
		Note2 n2 = new Note2();
		
		//n2.insertInfo();
		
		List<Note1> list = n2.selectInfo();
		
		for(Note1 n : list) {
			System.out.println(n.toString());
		}
	}
}

 

selectInfo()에 해당하는 출력결과

 

 

 

 

 


 

 

-Today short review-

JDBC를 이용하여 select, insert로 DB에 정보 입력, 출력을 해보았습니다.

잘못된 부분이 있다면 알려주시면 감사하겠습니다.

'JAVA' 카테고리의 다른 글

자바 JDK 설치 및 환경변수 설정  (0) 2023.10.23
자바 제네릭(Generic)  (0) 2023.10.16
자바 static  (0) 2023.10.10
자바 인터페이스(Interface)  (0) 2023.10.06
자바 상속 extends  (0) 2023.09.29