JDBC를 연동하기 위해서는 드라이버를 로드하고 JDBC URL로 접속하여 Connection 객체를 얻어오는 단계를 거쳐야 한다.
①. JDBC드라이버 로드 및 데이터베이스를 연결한다.
②. SQL문을 실행한다.
③. ResultSet 객체를 처리한다.
④. 자원 객체를 닫는다.
mariaDB드라이버의 경우 다음 실행문으로 드라이버를 메모리에 로드
Class.forName("org.mariadb.jabc.Driver");
데이터베이스와 연결해 Connection 객체 생성
Connection con = DriverManager.getConnection(url, user_id, passwd);
여기서 url은 다음 형식: jdbc:mysql://localhost:3306/testdb
package jdbc_test;
import java.sql.*;
public class jdbc_test {
public static void main(String[]args) {
String driver = "org.mariadb.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/testdb3";
try {
// 1. 데이터베이스(mariaDB)드라이버 로드
Class.forName(driver);
// 2. 드라이버 매니저 연결 + 커넥션 객체 생성
Connection conn = DriverManager.getConnection(url, "java", "java");
conn.close();
}
catch(SQLException e) {
e.printStackTrace();
}
catch(ClassNotFoundException e) {
System.out.println("JDBC 드라이버를 로드할 수 없습니다.");
// e.printStackTrace();
}
}
}
<%@page import="java.sql.*" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
Connection conn = null;
String driver = "org.mariadb.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/testdb3";
try {
// 1. 데이터베이스(mariaDB) 드라이버 로드
Class.forName(driver);
// 2. 드라이버 매니저 연결 + 커넥션 객체 생성
conn = DriverManager.getConnection(url,"java","java");
conn.close();
out.println("DB 연결 성공");
}
catch (Exception e) {
// e.printStackTrace();
out.println("DB 연결 실패");
}
%>
SQL 문을 DBMS에 전송할 수 있는 Statement 객체 생성
Statement stmt = con.createStatement();
SQL문 불러오기
package jdbc_test;
import java.sql.*;
public class jdbc_test {
public static void main(String[]args) {
String driver = "org.mariadb.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/testdb3";
try {
// 1. 데이터베이스(mariaDB)드라이버 로드
Class.forName(driver);
// 2. 드라이버 매니저 연결 + 커넥션 객체 생성
Connection conn = DriverManager.getConnection(url, "java", "java");
// 3. Statement 객체 생성
Statement stmt = conn.createStatement();
String sql = "SELECT * FROM member";
ResultSet rs = stmt.executeQuery(sql);
System.out.println("+----------------+");
while(rs.next()){
String id = rs.getString("id");
String name = rs.getString("name");
int level = rs.getInt("level");
System.out.println(id + " | " + name + " | " + level);
}
System.out.println("+----------------+");
System.out.println("DB 연결 성공");
}
catch(SQLException e) {
e.printStackTrace();
}
catch(ClassNotFoundException e) {
System.out.println("JDBC 드라이버를 로드할 수 없습니다.");
// e.printStackTrace();
}
}
}
Statement 인터페이스가 제공하는 주요 메서드
결과 집합의 처리
ResultSet은 SQL문의 결과물을 추상화한 인터페이스
예를 들어 SELECT name, phone FROM person;의 결과 집합
INSERT
package jdbc_test;
import java.sql.*;
public class jdbc_test {
public static void main(String[]args) {
String driver = "org.mariadb.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/testdb3";
try {
// 1. 데이터베이스(mariaDB)드라이버 로드
Class.forName(driver);
// 2. 드라이버 매니저 연결 + 커넥션 객체 생성
Connection conn = DriverManager.getConnection(url, "java", "java");
// 3. Statement 객체 생성
Statement stmt = conn.createStatement();
/* 데이터 추가 INSERT */
String insertSql = "INSERT INTO member(id, name, level) VALUES ('tiger', '호랭이', 3)";
ResultSet rs = stmt.executeQuery(insertSql);
String sql = "SELECT * FROM member";
// ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
String id = rs.getString("id");
String name = rs.getString("name");
int level = rs.getInt("level");
System.out.println(id + " | " + name + " | " + level);
}
System.out.println("DB 연결 성공");
}
catch(SQLException e) {
e.printStackTrace();
}
catch(ClassNotFoundException e) {
System.out.println("JDBC 드라이버를 로드할 수 없습니다.");
// e.printStackTrace();
}
}
}
UPDATE
package jdbc_test;
import java.sql.*;
import javax.swing.JOptionPane;
public class jdbc_test {
public static void main(String[]args) {
String driver = "org.mariadb.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/testdb3";
try {
// 1. 데이터베이스(mariaDB)드라이버 로드
Class.forName(driver);
// 2. 드라이버 매니저 연결 + 커넥션 객체 생성
Connection conn = DriverManager.getConnection(url, "java", "java");
// 3. Statement 객체 생성
Statement stmt = conn.createStatement();
/* 데이터 수정 UPDATE */
String updateSql = "UPDATE member SET level=5 WHERE id='tiger' ";
ResultSet rs = stmt.executeQuery(updateSql);
String sql = "SELECT * FROM member";
while(rs.next()){
String id = rs.getString("id");
String name = rs.getString("name");
int level = rs.getInt("level");
System.out.println(id + " | " + name + " | " + level);
}
System.out.println("DB 연결 성공");
}
catch(SQLException e) {
e.printStackTrace();
}
catch(ClassNotFoundException e) {
System.out.println("JDBC 드라이버를 로드할 수 없습니다.");
// e.printStackTrace();
}
}
}
DELETE
package jdbc_test;
import java.sql.*;
public class jdbc_test {
public static void main(String[]args) {
String driver = "org.mariadb.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/testdb3";
try {
// 1. 데이터베이스(mariaDB)드라이버 로드
Class.forName(driver);
// 2. 드라이버 매니저 연결 + 커넥션 객체 생성
Connection conn = DriverManager.getConnection(url, "java", "java");
// 3. Statement 객체 생성
Statement stmt = conn.createStatement();
// /* 데이터 삭제 DELECT */
String deleteSql = "DELETE FROM member WHERE id='tiger' ";
ResultSet rs = stmt.executeQuery(deleteSql);
String sql = "SELECT * FROM member";
// ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
String id = rs.getString("id");
String name = rs.getString("name");
int level = rs.getInt("level");
System.out.println(id + " | " + name + " | " + level);
}
System.out.println("DB 연결 성공");
}
catch(SQLException e) {
e.printStackTrace();
}
catch(ClassNotFoundException e) {
System.out.println("JDBC 드라이버를 로드할 수 없습니다.");
// e.printStackTrace();
}
}
}
ResultSet 인터페이스가 제공하는 주요 메서드
JNDI(Java Naming and Directory Interface)란 명명서비스 및 디렉터리 서비스에 접근하기 위한 API를 말한다. 즉, 특정한 자원에 접근하기 위한 이름으로 사용된다.