일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- vue.js
- Ajax
- Tomcat
- 기출문제
- mybatis
- 부스트코스
- bulkinsert
- JAXBContext
- 정보처리산업기사
- spring
- JQuery
- swipe 배너
- JSON
- 구멍가게코딩단
- jsp
- java
- vscode tutorial
- egov
- query
- NoSQL
- mysql
- github
- MariaDB
- vue Carousel
- checkbox
- INSERT
- 오라클
- insertAll
- jdbc
- 마스킹
Archives
- Today
- Total
개발새발
10. JDBC - BE 본문
728x90
반응형
1) JDBC란?
: JAVA언어를 이용해서 DBMS로 부터 정보를 조회하는 방법.
[JDBC 개요]
- JDBC(Java Database Connectivity)의 정의
- 자바를 이용한 데이터베이스 접속과 SQL 문장의 실행, 그리고 실행 결과로 얻어진 데이터의 핸들링을 제공하는 방법과 절차에 관한 규약
- 자바 프로그램 내에서 SQL문을 실행하기 위한 자바 API
- SQL과 프로그래밍 언어의 통합 접근 중 한 형태 - JAVA는 표준 인터페이스인 JDBC API를 제공
- 데이터베이스 벤더, 또는 기타 써드파티에서는 JDBC 인터페이스를 구현한 드라이버(driver)를 제공한다.
[JDBC 환경 구성]
- JDK 설치
- JDBC 드라이버 설치
- Maven에 다음과 같은 의존성을 추가한다. MySQL사이트에서 다운로드 한다.
1
2
3
4
5
|
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
|
[JDBC를 이용한 프로그래밍 방법]
- import java.sql.*;
- 드라이버를 로드 한다.
- Connection 객체를 생성한다.
- Statement 객체를 생성 및 질의 수행
- SQL문에 결과물이 있다면 ResultSet 객체를 생성한다.
- 모든 객체를 닫는다
2) JDBC실습
[ (실습 1 ) Role table에 있는 Date console창에 가져와보기]
1. dto 만들기
2. dao.java
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
package kr.or.connect.jdbcexam.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class RoleDao {
private static String dburl = "jdbc:mysql://localhost:3306/connectdb";
private static String dbUser = "connectuser";
private static String dbpasswd = "connect123!@#";
public Role getRole(Integer roleId) {
Role role = null;
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(dburl, dbUser, dbpasswd);
String sql = "SELECT role_id, description From role Where role_id=?";
ps = conn.prepareStatement(sql);
ps.setInt(1, roleId);
rs = ps.executeQuery();
if(rs.next()) {
String description = rs.getString(2);
role = new Role(id, description);
}
}catch(Exception e) {
e.printStackTrace();
}finally {
if(rs != null) {
try {
}catch(SQLException e) {
e.printStackTrace();
}
}
if(ps != null) {
try {
}catch(SQLException e) {
e.printStackTrace();
}
}
if(conn != null) {
try {
}catch(SQLException e) {
e.printStackTrace();
}
}
}
return role;
}
}
|
3. role_id가 100인거 확인
근데 에러가 뜬다.
[(실습 2) Insert와 Select 다른 코드부분 이해]
dao.java에 insert문 addRole 추가
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
|
public class RoleDao {
private static String dburl = "jdbc:mysql://localhost:3306/connectdb?serverTimezone=Asia/Seoul";
private static String dbUser = "connectuser";
private static String dbpasswd = "connect123!@#";
public int addRole(Role role) {
int insertCount = 0;
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
String sql = "INSERT INTO role (role_id, description) VALUES ( ?, ? )";
try (Connection conn = DriverManager.getConnection(dburl, dbUser, dbpasswd);
PreparedStatement ps = conn.prepareStatement(sql)) {
ps.setInt(1, role.getRoleId());
ps.setString(2, role.getDescription());
insertCount = ps.executeUpdate();
} catch (Exception ex) {
ex.printStackTrace();
}
return insertCount;
}
|
insert문 실행
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
package kr.or.connect.jdbcexam;
public class jdbcExam2 {
public static void main(String[] args) {
int roleId = 500;
String description = "CTO";
Role role = new Role(roleId, description);
RoleDao dao = new RoleDao();
int insertCount = dao.addRole(role);
System.out.println(insertCount);
}
}
|
** try-with-resource : finally로 안닫아줘도 된대.
[ (삭제) deleteRole ]
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
|
public int deleteRole(Integer roleId) {
int deleteCount = 0;
Connection conn = null;
PreparedStatement ps = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(dburl, dbUser, dbpasswd);
String sql = "DELETE FROM role WHERE role_id = ?";
ps = conn.prepareStatement(sql);
ps.setInt(1, roleId);
deleteCount = ps.executeUpdate();
}catch(Exception e) {
e.printStackTrace();
}finally {
if(ps != null) {
try {
}catch(SQLException e) {
}
}
if(conn != null) {
try {
}catch(SQLException e) {
}
}
}
return deleteCount;
}
|
jdbcExam4.java - Delete
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
package kr.or.connect.jdbcexam;
public class jdbcExam4 {
public static void main(String[] args) {
int roleId=501;
RoleDao dao = new RoleDao();
int deleteCount = dao.deleteRole(roleId);
System.out.print(deleteCount);
}
}
|
[ (수정) updateRole]
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
|
public int updateRole(Role role) {
int updateCount = 0;
Connection conn = null;
PreparedStatement ps = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(dburl, dbUser, dbpasswd);
String sql = "UPDATE role SET description = ? WHERE role_id = ?";
ps = conn.prepareStatement(sql);
ps.setString(1, role.getDescription());
ps.setInt(2, role.getRoleId());
updateCount = ps.executeUpdate();
}catch(Exception ex) {
ex.printStackTrace();
}finally {
if(ps != null) {
try {
}catch(SQLException e ) {
}
}
if(conn != null) {
try {
}catch(SQLException e ) {
}
}
}
return updateCount;
}
|
jdbcExam5.java - Update
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
package kr.or.connect.jdbcexam;
public class jdbcExam5 {
public static void main(String[] args) {
//수정테스트
int roleId = 500;
String description = "CEO";
Role role = new Role(roleId, description);
RoleDao dao = new RoleDao();
int updateCount = dao.updateRole(role);
System.out.println(updateCount);
}
}
|
728x90
반응형
'[부스트코스] 웹프로그래밍 > DB 연결 웹 앱' 카테고리의 다른 글
[DB 연결 웹 앱] 프로젝트 만들기 (0) | 2019.11.24 |
---|---|
8. [DB 연결 웹 앱] SQL - BE (0) | 2019.11.23 |
7. [DB 연결 웹 앱] MySQL - BE (0) | 2019.11.23 |
6. [DB 연결 웹 앱] JSTL & EL - BE (0) | 2019.11.23 |
5. [DB 연결 웹 앱] scope - BE (0) | 2019.11.22 |
Comments