Java 프로그램에서 DB 서버를 접속하여 데이터를 처리하는 기능을 구현하고자 할 때 사용되는 기술
Connection
Statement
PreparedStatement
ResultSet
DatabaseMetaData
ResultSetMetaData
DriverManager
Date
Time
Timestamp
import java.sql.Connection;
import java.sql.DriverManager;
public class ConnectDB {
public static void main(String[] args) {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
// JDBC URL : jdbc:DBMS이름://[Hostname][:Port]/DB이름[?param1=value1][¶m2=value2]...
String url = "jdbc:mysql://localhost:3306/sqldb?characterEncoding=UTF-8&serverTimezone=UTC";
String user = "root";
String passwd = "";
Connection conn = DriverManager.getConnection(url, user, passwd);
conn.close();
System.out.println("MySQL연결 성공");
} catch (Exception e) {
System.out.println("MySQL 연결 실패");
System.out.println("사유" + e.getMessage());
}
}
}
DriverManager로 어떤 DB를 사용할 것인지 드라이버를 로드
Class.forName("com.mysql.cj.jdbc.Driver"); // 각 DB마다 고유의 드라이버 이름이 있음
DB를 결정 후, 연결을 위해 연결 정보를 입력
String url = "jdbc:mysql://localhost:3306/sqldb?characterEncoding=UTF-8&serverTimezone=UTC";
String user = "root";
String passwd = "p@ssw0rd";
Connection conn = DriverManager.getConnection(url, user, passwd);
DB 서버에 SQL 명령을 전달하야 실행시키기 위한 객체를 생성
Statement stmt = conn.createStatement();
SELECT 명령을 실행한 결과는 JDBC 드라이버가 ResultSet이라는 객체로 반환
ResultSet rs = stmt.excuteQuery("SELECT ename, sal FROM emp");
rs.next();
String name = rs.getString("ename");
int salary = rs.getInt("sal");
반환 작업은 사용했던 객체를 역순으로 닫음
rs.close();
stmt.close();
conn.close();
ResultSet
Query의 실행 결과를 담는 객체
- 최초에는 결과 집합에서 0번째 줄을 가리키고
다음 줄을 가리키기 위해서는 next() 메서드를 수행
SELECT 명령 이외의 명령을 실행 할 때는 executeUpdate() 메서드를 사용한다.
return
값은 SQL 명령에 의해 테이블에서 변화된 행의 갯수를 의미?
을 통해 매개변수 전달