연동법
자바와 데이터베이스를 연결시켜주는 라이브러리
package ch13;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class S01 {
public static void main(String[] args) {
// 자바와 DB를 연결하는 객체
Connection connection = null;
// 3306까지가 데이터베이스 시스템 / hr 위치가 데이터베이스
String url = "jdbc:mariadb://localhost:3306/hr";
// 데이터베이스 연결
try {
connection = DriverManager.getConnection(
url,
"root",
"1234"
);
} catch (SQLException e) {
System.out.println("디비 연결 오류");
return;
}
// 쿼리문 날리기
String sql = "SELECT first_name FROM employees WHERE employee_id = ?";
PreparedStatement preparedStatement = null;
try {
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, 100);
} catch (SQLException e) {
System.out.println("디비 사용 중 오류");
}
ResultSet resultSet = null;
try {
resultSet = preparedStatement.executeQuery();
} catch (SQLException e) {
System.out.println("쿼리 실행 중 오류 발생");
System.out.println(e.getMessage());
return;
}
// 데이터 자바로 변환
try {
if(resultSet.next()){
System.out.println(resultSet.getString("first_name"));
}
} catch (Exception e) {
System.out.println("데이터 변환 중 오류");
};
try {
// connection은 무조건 닫아줘야 함
// null 체크
if(connection != null){
connection.close();
}
if(preparedStatement != null){
preparedStatement.close();
}
if(resultSet != null){
resultSet.close();
}
} catch (Exception e) {
System.out.println("연결 종류 중 오류가 발생");
}
}
}
// Emp.java
package ch13;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
// employee 클래스
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class Emp {
private int employee_id;
private String firstName;
private int salary;
}
// S02.java
package ch13;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class S02 {
public static void main(String[] args) throws SQLException {
// try 밖에서도 쓸 수 있게 선언만
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
// db 연결 주소
String url = "jdbc:mariadb://localhost:3306/hr";
// db 연결
connection = DriverManager.getConnection(url, "root", "1234");
// 쿼리문 준비
String sql = "SELECT * FROM employees WHERE salary > 10000";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, 100);
// 쿼리문 실행
resultSet = preparedStatement.executeQuery();
// 결과값 확인
List<Emp> list = new ArrayList<>();
while(resultSet.next()){
Emp emp = new Emp(
resultSet.getInt("employee_id"),
resultSet.getString("first_name"),
resultSet.getInt("salary")
);
list.add(emp);
}
System.out.println(list);
// if(resultSet.next()){
// Emp emp = new Emp(
// resultSet.getInt("employee_id"),
// resultSet.getString("first_name"),
// resultSet.getInt("salary")
// );
// System.out.println(emp);
// }
} catch (Exception e) {
System.out.println(e.getMessage());
} finally {
// connection은 무조건 닫아줘야 함
// null 체크
if(connection != null){
connection.close();
}
if(preparedStatement != null){
preparedStatement.close();
}
if(resultSet != null){
resultSet.close();
}
}
}
}
public class NaverDTO {
private String userId;
private String userPw;
private String userName;
private String Email;
public String getUserPw() {
return userPw;
}
public void setUserPw(String userPw) {
this.userPw = userPw;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getEmail() {
return Email;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public void setEmail(String email) {
Email = email;
}
// setter getter
// 데이터값 세팅
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class DBClass {
private static final String DB_DRIVER_CLASS = "org.mariadb.jdbc.Driver";
private static final String DB_URL = "jdbc:mariadb://127.0.0.1:3306/hello";
private static final String DB_USERNAME = "hello";
private static final String DB_PASSWORD = "hello1";
private static Connection conn;
PreparedStatement pstmt = null;
// DB 연결
public static void connectDB() {
try {
Class.forName(DB_DRIVER_CLASS);
conn = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD);
System.out.println("연결성공");
} catch (ClassNotFoundException e) {
System.out.println("실 패");
} catch (SQLException e) {
System.out.println("DB 연결 실패");
}
}
public static void saveDB(NaverDTO dto) {
PreparedStatement pstmt = null;
try {
// Insert문 ?부분은 아래의 입력값이 자동으로 변환이 됩니다.
String sql = "INSERT INTO `naver` (`userid`, `userpw`, `name`, `email`) VALUES (?, ?, ?, ?); ";
pstmt = conn.prepareStatement(sql);
int index = 1;
// Insert 데이터값
pstmt.setString(index++, dto.getUserId());
pstmt.setString(index++, dto.getUserPw());
pstmt.setString(index++, dto.getUserName());
pstmt.setString(index++, dto.getEmail());
// SQL실행
int count = pstmt.executeUpdate();
if (count == 0) {
System.out.println("데이터값에 이상이 있습니다.");
} else {
System.out.println("데이터 Insert 성공!");
}
} catch (SQLException e) {
System.out.println("Database 연결중 에러가 발생 했습니다.");
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static List<NaverDTO> selectDB() {
PreparedStatement pstmt = null;
ResultSet rs = null;
List<NaverDTO> list = new ArrayList<>();
try {
// Select 쿼리문
String sql = "SELECT * FROM naver";
// 객체 생성
pstmt = conn.prepareStatement(sql);
// SQL실행
rs = pstmt.executeQuery();
// 결과값 출력
while (rs.next()) {
NaverDTO dto = new NaverDTO();
String userid = rs.getString("userid");
String userpw = rs.getString("userpw");
String name = rs.getString("name");
String email = rs.getString("email");
dto.setUserId(userid);
dto.setUserPw(userpw);
dto.setUserName(name);
dto.setEmail(email);
list.add(dto);
}
} catch (SQLException e) {
System.out.println("Database 연결중 에러가 발생 했습니다.");
System.out.println(e.getMessage());
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}
}
import java.util.List;
import java.util.Scanner;
public class App {
public static void main(String[] args) throws Exception {
System.out.println("Hello, World!");
// 사용자에게 id, pw, 이름, 이메일
Scanner sc = new Scanner(System.in);
NaverDTO dto = new NaverDTO();
System.out.println("ID");
dto.setUserId(sc.nextLine());
System.out.println("PW");
dto.setUserPw(sc.nextLine());
System.out.println("이름");
dto.setUserName(sc.nextLine());
System.out.println("이메일");
dto.setEmail(sc.nextLine());
// db 연결
DBClass.connectDB();
// 데이터 저장
// DBClass.saveDB(dto);
// 데이터 조회
List<NaverDTO> resultDto = DBClass.selectDB();
for(NaverDTO item : resultDto){
System.out.println("아이디 : " + item.getUserId());
System.out.println("비밀번호 : " + item.getUserPw());
System.out.println("이름 : " + item.getUserName());
System.out.println("이메일 : " + item.getEmail());
System.out.println();
}
// 데이터 수정
// 데이터 삭제
}
}