공부/Java
JDBC(Databases)//MySQL
726582776982
2022. 5. 2. 10:10
JDBC(Java Database Connectivity)는
자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다.
JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다.
JDBC 드라이버들은 자바 프로그램의 요청을 DBMS가 이해할 수 있는 프로토콜로 변환해주는 클라이언트 사이드 어댑터이다. (서버가 아닌 클라이언트 머신에 설치)
출처 - https://ko.wikipedia.org/wiki/JDBC (위키피디아)
---- DB Connection ----
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
//src -> build Path -> Libraries (상단메뉴) -> ClassPath 경로에 JDBC (Jar) 파일을 추가하여 DB를 처리할 수 있도록 함.
//** 참조 SQL 클래스
import java.sql.Connection;
import java.sql.DriverManager;
//** DB 연결
//=> Connection 클래스가 DB 연결및 연결정보를 관리함
// 즉, Connection 객체를 생성해야함
public class Ex01_DBConnection {
// ** connection 객체 생성
public static Connection getConnection(){
try {
Class.forName("com.mysql.cj.jdbc.Driver");
// mySQL 전용 JDBC 드라이버
String url = "jdbc:mysql://localhost:3306/mydb?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true";
// mySQL 전용 경로
System.out.println("** JDBC Connection 성공 **");
return DriverManager.getConnection(url,"mysql","mysql");
} catch (Exception e) {
System.out.println("** JDBC Connection 실패 => "+e);
return null;
}
}
}
|
cs |
---- DAO ----
// Data Access Object
//** DAO(Data Access Object)
//=> SQL 구문 처리 *******************************
//=> CRUD 구현
// Create(insert), Read(select), Update, Detete
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
private static Connection cn = Ex01_DBConnection.getConnection();
// mySQL 연결 클래스 인스턴스화
private static Statement st; //
// Statement 클래스
// SQL 구문을 실행하는 역할
// 스스로는 SQL 구문 이해 못함(구문해석 X) -> 전달역할
// SQL 관리 O + 연결 정보 X
// 각 구문을 실행하는 과정에서 전달하고 전달받은 사항을
// 다시 ResultSet 으로 이동하는 과정에서 보안상 이유(Secure Coding, SQL injection 방지) or 지속적인 반복처리(반복문 or 지속적인 요청처리)등의 이유로 Pst 가 효율성이 더 좋다.
private static PreparedStatement pst;
// ** preparedStatement
// 파싱횟수 (참조처리) 감소
// => 전달받을 값 위치에 ? 사용
// => ? : 바인딩 변수
// => 바인딩 변수를 처리하기위해 SQL 구문을 먼저처리함. -> 값을 변환 처리(보안성)
sql = "select * from member where name = ?";
// select * from member where name = '스티브'
pst = cn.prepareStatement(sql);
pst.setString(1, name);
// (처음 나타나는 ? 의 인자값 , 원하는 경로? 대상?)
// ?) 바인딩 변수를 사용하기위해 sql 파라미터값을 미리추가함.
rs = pst.executeQuery();
// 실행 시 파라미터값이 없다.
private static ResultSet rs;
// 결과값을 저장할 수 있다.
// 저장된 값을 한 행 단위로 불러올 수 있다.
// 한 행에서 값을 가져올 때는 타입을 지정해 불러올 수 있다.
// 1.2) sql 구문 처리(상황에 따른
st = cn.createStatement();
rs = st.executeQuery(sql); // Read (Select 읽어들어오는 명령어 )
// 실행 시 파라미터값 (sql)을 전달받는다.
// 1.3) 결과처리
// (rs) ResultSet 변수에 결과가 있는지 확인 후 마지막 데이터까지 출력
int count = pst.executeUpdate(); // Create , Use , Delete( 수정사항이 적용되야하는 명령어)
private static String sql;
// SQL 구문( Create , Read(select) , Update, Delete ==> CRUD) 구문을 String 타입의 변수를 지정해 저장.
|
cs |