콘텐츠로 건너뛰기

[Spring을 이용한 웹 백엔드 기초] 1. SQL & JDBC 프로그래밍 – 6) JDBC

JDBC란?

– JDBC (Java Database Connectivity)의 정의

  • 자바를 이용한 데이터베이스 접속과 SQL 문장의 실행, 그리고 실행 결과로 얻어진 데이터의 핸들링을 제공하는 방법과 절차에 관한 규약
  • 자바 프로그램 내에서 SQL문을 실행하기 위한 자바 API
  • SQL과 프로그램이 언어의 통합 접근 중 한 형태

JAVA는 표준 인터페이스인 JDBC API를 제공하며, 데이터베이스 벤더 또는 기타 써드파티에서는 JDBC 인터페이스를 구현한 드라이버를 제공한다.

 

– JDBC를 사용한 프로그래밍 방법

  1. Connection 객체 생성 – 연결(MySQL – DB)
  2. Statment 객체 생성 및 질의 작성 – Query 문 작성
  3. 질의 수행 – 실행
  4. 연결 종료

JDBC 클래스의 생성 관계: Driver Manager – Connection – Statement – ResultSet

클로즈 할 때는 반대로 클로즈해주어야 한다.(ResultSet 부터)

1. import

import java.sql.*;

2. 드라이버 로드

Class.forName ("com.mysql.jdbc.Driver");
// Class 객체의 forName 메소드를 이용하여 드라이버 로드
// 드라이버 네임은 DBMS의 종류에 따라 다름(Oracle, MySQL 등 서로 다른 이름을 사용)

3. connection 얻기

String dburl = "jdbc:mysql://localhost/dbName";
Connection con = DriverManager.getConnection(URL,ID,PWD); 

4. statemen 생성

Statement stmt = con.CreateSatement();

5. 질의 수행

ResultSet rs = stmt.executeQuery("select no from user");
// 어떤 쿼리를 사용할거냐에 따라서 사용하는 execute 함수가 다름
// execute - anySQL
// executeQuery - SELECT
// executeUpdate - INSERT, UPDATE, DELETE

6. ResultSet으로 결과 받기

while(rs.next())
   System.out.println(rs.getInt("no"));

7. Close

rs.close();
stmt.close();
con.close(); 
// close 할 때는 생성과 반대 순서대로

 

– JDBC 실습하기

에러 기록(mysql non transient connection exception)

DB와 connection할 떄 아래와 같은 에러가 나서 보니 pom.xml에 명시한 mysql 버전과 실제 내 PC에 설치된 mysql 버전이 달라서 나는거였다. 내 버전에 맞게 pom.xml 수정해 주니 정상적으로 연결되었다(참고 링크)

에러:
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.

pom.xml

  	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>8.0.25</version>
		<!-- <version>5.1.45</version> 5.1.45로 되어있었는데 8.0.25로 변경 -->
	</dependency>

 jdbc를 이용하여 데이터베이스에서 입력/수정/조회/삭제 하는 프로그램 만들기

conenctedb의 role 테이블에 접근하여 입력/수정/조회/삭제하는 코드를 작성해본다.

// 코드 링크 올리기