# MySQL과 연결하여 DB 편집하고 출력하기
- MySQL 다운로드
- 프로젝트 우클릭 -> Properties -> Java Build Path -> Classpath -> Add External JARs...-> mysql-connector-j-8.0.xx.jar 선택
- 데이터 보존과 관리를 유용하게 하기 위해 DB사용
- DB라이브러리 접속 및 실행
class MyDB1 {
private Connection conn;
private static final String USERNAME = "root";
private static final String PASSWORD = "root";
private static final String URL = "jdbc:mysql://localhost:3306/company"; // 스키마명
// DB라이브러리 실행
public MyDB1() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
// DB 접속
public void connect() {
try {
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
} catch (SQLException e) {
e.printStackTrace();
}
}
- 간단한 쿼리문 작성
- C(Create) -> insert (INSERT INTO 테이블명 (데이터명, 데이터명) VALUES (삽입할 데이터, 삽입할 데이터)
- R(Read) -> select (SELECT * FROM 테이블명)
- U(Update) -> update (UPDATE 테이블명 SET 데이터명 = '삽입할데이터' WHERE id='바꿀 아이디번호')
- D(Delete) -> delete (DELETE FROM 테이블명 WHERE id='삭제할 아이디번호')
- Statement: Connection으로 연결한 객체에게 Query 작업을 실행하기 위한 객체.
- executeQuery(): sql에 저장한 문자열을 쿼리로 실행. 조회문(select, show 등)에 사용
- excuteUpdate(); 조회문을 제외한 creat, insert, update, delete 등을 처리할 때 사용
// select: 검색
public void select() {
Statement stmt = null;
ResultSet rs = null;
try {
stmt = conn.createStatement();
String sql = "SELECT * FROM worker"; // select All
rs = stmt.executeQuery(sql); //sql에 저장한 문자열을 쿼리로 실행
while(rs.next()) { // 위에서부터 한 행씩 반복문
int id = rs.getInt(1); // 첫번째 열의 값을 가져오겠다.
String name = rs.getString(2); // 두번째 열의 값을 가져오겠다
String gender = rs.getString(3); // 세번째 열의 값을 가져오겠다
System.out.println(id + " " + name + " " + gender); // 한 행씩 실행할 때마다 출력
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
stmt.close();
conn.close();
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
// insert: 입력
public void insert() {
Statement stmt = null;
try {
stmt = conn.createStatement();
String sql = "INSERT INTO worker (name, gender) VALUES ('yellow', 'woman')";
int result = stmt.executeUpdate(sql);
if(result > 0) {
System.out.println("입력 성공");
} else {
System.out.println("입력 실패");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
// update: 수정
public void update() {
Statement stmt = null;
try {
stmt = conn.createStatement();
String sql = "UPDATE worker SET gender ='woman' WHERE id='3'";
int result = stmt.executeUpdate(sql);
if(result > 0) {
System.out.println("수정 성공");
} else {
System.out.println("수정 실패");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
// delete: 삭제
public void delete () {
Statement stmt = null;
try {
stmt = conn.createStatement();
String sql = "DELETE FROM worker WHERE id='4'";
int result = stmt.executeUpdate(sql);
if(result > 0) {
System.out.println("삭제 성공");
} else {
System.out.println("삭제 실패");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
- PreparedStatement를 이용한 쿼리문 실행
sql문을 미리 선언해놓고 사용하며 createStatement가 아닌 prepareStatement를 사용한다
sql의 ?에 해당하는 값은 setString(물음표 순서, 넣을 값)으로 값을 지정한다
// select: 전체보기
public void select() {
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "SELECT * FROM worker";
try {
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery(sql); // sql에 저장한 문자열을 쿼리로 실행
while(rs.next()) {
int id = rs.getInt("id");
String name = rs.getString(2);
String gender = rs.getString("gender");
System.out.println(id + " " + name + " " + gender); // 한 행씩 실행할 때마다 출력
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
pstmt.close();
rs.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
// insert: 삽입
public void insert() {
PreparedStatement pstmt = null;
String sql = "INSERT INTO worker (name, gender) VAlUES(?, ?)";
try {
pstmt = conn.prepareStatement(sql); // ?에 해당하는 값을 채워줌(pstmt는 뒤늦게 ?를 채워줘도 된다)
pstmt.setString(1, "pink"); // 첫번째 ?에 문자열 채워넣기
pstmt.setString(2, "woman"); // 두번째 ?에 문자열 채워넣기
int result = pstmt.executeUpdate();
if(result > 0) {
System.out.println("입력 성공");
} else {
System.out.println("입력 실패");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
pstmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
// update: 수정
public void update() {
PreparedStatement pstmt = null;
String sql = "UPDATE worker SET gender=? WHERE id=?";
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "man");
pstmt.setInt(2, 8);
int result = pstmt.executeUpdate();
if(result > 0) {
System.out.println("수정 성공");
} else {
System.out.println("수정 실패");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
pstmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
// delete: 삭제
public void delete() {
PreparedStatement pstmt = null;
String sql = "DELETE FROM worker WHERE id=?";
try {
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 8);
int result = pstmt.executeUpdate();
if(result > 0) {
System.out.println("삭제 성공");
} else {
System.out.println("삭제 실패");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
pstmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
'JAVA' 카테고리의 다른 글
[servlet] 리스너 & 필터 (0) | 2023.10.24 |
---|---|
[springboot] SpringBoot 작업환경 세팅하기 (0) | 2023.05.03 |
JAVA 7주차 (1) | 2022.12.15 |
JAVA 6주차 (0) | 2022.12.11 |
자바 5주차 (0) | 2022.12.09 |
댓글