JDBC는 자바 데이터베이스 연결(Java Database Connectivity) 의 약자로, 자바 프로그램이 다양한 종류의 데이터베이스에 연결하고 SQL 문을 실행하여 데이터를 조회(SELECT), 삽입(INSERT), 수정(UPDATE), 삭제(DELETE) 하는 등의 작업을 할 수 있도록 돕는 표준 API(응용 프로그래밍 인터페이스) 이다.
IntelliJ에서
+ 버튼 클릭 → Maven추가하면 라이브러리 클래스가 프로젝트에 포함된다.
적용을 누르고 확인을 누른다.

필수는 아니지만 빌드/실행 속도에 영향을 줄 수 있으니 해두면 나쁠 건 없다.
왼쪽 탭에서 외부 라이브러리(External Libraries) 를 눌렀을 때
추가한 드라이버가 보이면 정상적으로 추가된 것이다.
build.gradle 클릭 → dependencies 에 implementation 으로 mysql-connector 의존성을 추가한다.
오타 수정:
buold.gradle→build.gradle
오타 수정:myslq-connector→mysql-connector
그리고 화면에 뜨는 코끼리(Gradle Sync) 를 꼭 클릭해서 반영한다.
이제 소스 파일로 돌아가서 연결하기 위한 코드를 작성한다.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class insertTest {
public static void main(String[] args) throws Exception{
//0. 드라이버를 로딩한다. (MySQL 드라이버를 메모리에 올리기 - Class.forName)
//최신 버전은 생략 가능!
String url = "jdbc:mysql://localhost:0000/liondb";
// DBMS들마다 URL 형식이 조금씩 다르다.
String user = "root";
String password = "root1234";
//1. 접속 -- Connection
Connection conn = DriverManager.getConnection(url,user,password);
//2. 쿼리 작성 -- PreparedStatement
// 쿼리문이 실행될 때 DBMS가 알아들을 수 있게 번역(파싱)된다.
// 같은 쿼리가 또 들어오면 이미 번역한 것을 재사용한다.
//insert into students (name) values('kang');
//insert into students (name) values('hong');
//insert into students (name) values('kim');
//위의 쿼리는 각자 다른 쿼리로 인식!
// statement는 값까지 들어간 "완성된 쿼리"로 실행됨
// preparedStatement는
// insert into student (name) values(?);
// 여기까지를 먼저 번역해두고 값만 바인딩한다.
String sql = "insert into dept(deptno, dname, loc) values(?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
// 반드시 ?에 값을 채워줘야 함 -- 쿼리를 완성시켜야 함
ps.setInt(1,50);
ps.setString(2,"lion");
ps.setString(3,"seoul");
//3. 실행!
//ps.executeUpdate(); int값 리턴
//ps.executeQuery(); resultSet값 리턴 (조회 결과 리턴)
int resultCount = ps.executeUpdate();
if(resultCount==1){
System.out.println("입력성공");
}
ps.close();
conn.close();
}
}
이후 코드를 실행한 다음, MySQL에서 SELECT * FROM 테이블명; 으로 확인해 보면 데이터가 들어가 있는 것을 볼 수 있다.
와! 재밌다!
생각보다 재미있었다. 근데 아직까진 강사님이 말씀하시는 대로 따라가기만 해서, 나중에 프로젝트를 할 때 자유자재로 사용해보고 싶다.
아직 연결하고 간단한 쿼리문만 입력해봐서 어려운지는 아직 잘 모르겠다.