이전글
2020/11/15 - [Back-end/JAVA] - [JAVA] SQLite 무작정 시작하기 (1) - DATABASE 연결/해제
2020/11/15 - [Back-end/JAVA] - [JAVA] SQLite 무작정 시작하기 (2) - TABLE 생성/삭제
서론
이전 포스트에서 테이블을 생성하고 삭제하는 방법에 대해서 알아보았다. 이번 포스트에서는 데이터를 생성하는 방법에 대해서 알아보도록 하겠다.
소스코드
1. DMLService.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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
package com.dochi.db.ex;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
public class DMLService extends SQLiteManager {
// 상수 설정
// - DateFormat 설정
public static final SimpleDateFormat DATETIME_FMT = new SimpleDateFormat("yyyyMMddHHmmss");
// 생성자
public DMLService() {
}
public DMLService(String url) {
super(url);
}
// 데이터 삽입 함수
public int insertBlogArticle(Map<String, Object> dataMap) throws SQLException {
final String sql = "INSERT INTO CW_BLOG_ATCL_LIST ("+"\n"
+ " BLOG_ID, "+"\n"
+ " CATE_ID, "+"\n"
+ " ATCL_ID, "+"\n"
+ " URL, "+"\n"
+ " TITLE, "+"\n"
+ " WORK_YN, "+"\n"
+ " REG_DTTM "+"\n"
+ ") VALUES ( "+"\n"
+ " ?, "+"\n"
+ " ?, "+"\n"
+ " ?, "+"\n"
+ " ?, "+"\n"
+ " ?, "+"\n"
+ " ?, "+"\n"
+ " ? "+"\n"
+ ")";
// 변수설정
// - Database 변수
Connection conn = ensureConnection();
PreparedStatement pstmt = null;
// - 입력 결과 변수
int inserted = 0;
try {
// PreparedStatement 생성
pstmt = conn.prepareStatement(sql);
// 입력 데이터 매핑
pstmt.setObject(1, dataMap.get("BLOG_ID"));
pstmt.setObject(2, dataMap.get("CATE_ID"));
pstmt.setObject(3, dataMap.get("ATCL_ID"));
pstmt.setObject(4, dataMap.get("URL"));
pstmt.setObject(5, dataMap.get("TITLE"));
pstmt.setObject(6, dataMap.get("WORK_YN"));
pstmt.setObject(7, DATETIME_FMT.format(new Date()));
// 쿼리 실행
pstmt.executeUpdate();
// 입력건수 조회
inserted = pstmt.getUpdateCount();
// 트랜잭션 COMMIT
conn.commit();
} catch (SQLException e) {
// 오류출력
System.out.println(e.getMessage());
// 트랜잭션 ROLLBACK
if( conn != null ) {
conn.rollback();
}
// 오류
inserted = -1;
} finally {
// PreparedStatement 종료
if( pstmt != null ) {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
// 결과 반환
// - 입력된 데이터 건수
return inserted;
}
}
|
cs |
2. App.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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
package com.dochi.db.ex;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import com.dochi.db.ex.DDLService.ResultType;
public class App {
// 변수 생성
// - DDL 객체 변수 ( dochi.db 파일 생성 )
private DDLService DDL = new DDLService("jdbc:sqlite:dochi.db");
// - DML 객체 변수 ( dochi.db 파일 수정 )
private DMLService DML = new DMLService("jdbc:sqlite:dochi.db");
// 테이블 생성 함수
public void createTable() throws SQLException {
final String SQL = "CREATE TABLE IF NOT EXISTS CW_BLOG_ATCL_LIST ( "+"\n"
+ " BLOG_ID TEXT NOT NULL, "+"\n"
+ " CATE_ID TEXT NOT NULL, "+"\n"
+ " ATCL_ID TEXT NOT NULL, "+"\n"
+ " URL TEXT NOT NULL, "+"\n"
+ " TITLE TEXT, "+"\n"
+ " WORK_YN INTEGER DEFAULT 0, "+"\n"
+ " REG_DTTM TEXT, "+"\n"
+ " UPD_DTTM TEXT, "+"\n"
+ " PRIMARY KEY (BLOG_ID, CATE_ID, ATCL_ID) )";
// 테이블 생성
ResultType result = DDL.createTable("CW_BLOG_ATCL_LIST", SQL);
// 테이블 생성 결과 출력
switch( result ) {
case SUCCESS:
System.out.println("테이블 생성 완료.");
break;
case WARNING:
System.out.println("테이블이 이미 존재합니다.");
break;
case FAILURE:
System.out.println("테이블 생성 실패.");
break;
}
// DB 연결 종료
DDL.closeConnection();
}
// 테이블 삭제 함수
public void dropTable() throws SQLException {
// 테이블 삭제
ResultType result = DDL.dropTable("CW_BLOG_ATCL_LIST");
// 테이블 삭제 결과 출력
switch( result ) {
case SUCCESS:
System.out.println("테이블 삭제 완료.");
break;
case WARNING:
System.out.println("테이블이 존재하지 않습니다.");
break;
case FAILURE:
System.out.println("테이블 삭제 실패.");
break;
}
// DB 연결 종료
DDL.closeConnection();
}
// 데이터 입력 함수
public void insert() throws SQLException {
// 상수 설정
// - Data를 저장할 객체 생성
// * 입력/수정/삭제/조회 에서 공통으로 사용
final Map<String, Object> dataMap = new HashMap<String, Object>();
dataMap.put("BLOG_ID" , "heodolf.tistory.com");
dataMap.put("CATE_ID" , "/");
dataMap.put("ATCL_ID" , "0");
dataMap.put("URL" , "https://heodolf.tistory.com/134");
dataMap.put("TITLE" , "[JAVA] Quartz 스케줄러 만들기 (1) - 실행");
dataMap.put("WORK_YN" , 0);
// 데이터 입력
int inserted = DML.insertBlogArticle(dataMap);
if( inserted >= 0 ) {
System.out.println(String.format("데이터 입력 성공: %d건", inserted));
} else {
System.out.println("데이터 입력 실패");
}
}
public static void main(String[] args) throws SQLException {
App db = new App();
db.dropTable(); // 테이블 삭제
db.createTable(); // 테이블 생성
db.insert(); // 데이터 입력
}
}
|
cs |
실행결과
마치며
여기까지 간단하게 데이터를 입력하는 방법에 대해서 다루어보았다. 다음 포스트에서는 입력된 데이터를 조회하는 방법에 대해서 다루어 보도록 하겠다.
'Back-end > JAVA' 카테고리의 다른 글
[JAVA] SQLite 무작정 시작하기 (5) - UPDATE (0) | 2020.11.15 |
---|---|
[JAVA] SQLite 무작정 시작하기 (4) - SELECT (0) | 2020.11.15 |
[JAVA] SQLite 무작정 시작하기 (2) - TABLE 생성/삭제 (0) | 2020.11.15 |
[JAVA] SQLite 무작정 시작하기 (1) - DATABASE 연결/해제 (0) | 2020.11.15 |
[JAVA] Quartz 스케줄러 만들기 (5) - Crawler Job (0) | 2020.11.12 |
댓글