J o e
JoE's StOrY
J o e
  • 분류 전체보기 (206)
    • workSpace (184)
      • 도메인 지식 (2)
      • ALGORITHM (39)
      • ANDROID (3)
      • JS (0)
      • JAVA (21)
      • MYSQL (6)
      • NETWORK (3)
      • PYTHON (91)
      • LINUX (9)
      • PROJECT (4)
    • Others (20)
      • Opic (1)
      • myLife (17)
      • popSong (1)
      • 정보처리기사 (1)
    • 훈빠의 특강 (0)
      • opencv (0)
      • python (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • The code with long statements is⋯
  • 매일 매일이 행복하고 밝은 날이 될거에요

인기 글

태그

  • 넘파이 문제
  • linearclassification
  • 단어의 개수
  • sort_value
  • 이미지 연산
  • java
  • read_html
  • dao
  • sort_index
  • Python
  • 태블릿 연동
  • MySQL
  • 넘파이함수
  • Fully Connected Network
  • numpy
  • How to create a GUI in Java with JFrame?
  • DTO
  • 파이썬
  • full loss
  • ㅖ43

최근 댓글

최근 글

티스토리

J o e

WHY?

[Java][JDBC][Insert][Update][Delete]자바에 MYSQL(workbench) 데이터베이스에 추가, 수정, 변경 하기
workSpace/JAVA

[Java][JDBC][Insert][Update][Delete]자바에 MYSQL(workbench) 데이터베이스에 추가, 수정, 변경 하기

2020. 12. 7. 12:21

mysql - Workbench


java - Eclipse

Main.java

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		InsertExam insert = new InsertExam();
		UpdateExam update = new UpdateExam();
		DeleteExam delete = new DeleteExam();
		Scanner scan = new Scanner(System.in);
		while (true) {
			System.out.println("1. 추가");
			System.out.println("2. 수정");
			System.out.println("3. 삭제");
			int num = scan.nextInt();
			if(num == 1) {
				System.out.println("추가");
				System.out.print("deptno : ");
				int deptno = scan.nextInt();
				System.out.print("dname : ");
				String dname = scan.next();
				System.out.print("loc : ");
				String loc = scan.next();
				insert.insert(deptno, dname, loc);
			} else if(num == 2) {
				System.out.println("수장");
				System.out.print("deptno : ");
				int deptno = scan.nextInt();
				System.out.print("dname : ");
				String dname = scan.next();
				System.out.print("loc : ");
				String loc = scan.next();
				update.update(deptno, dname, loc);
			} else if(num == 3) {
				System.out.println("삭제");
				System.out.print("deptno : ");
				int deptno = scan.nextInt();
				delete.delete(deptno);
			} else {
				System.out.println("잘못된 번호");
			}
		}
	}
}

insertExam.java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class InsertExam {
	/*
	 * 할일 1. 드라이버 로딩 - 실제 구현된 클래스를 메모리에 올린다. 2. DB 접속하기 3. 쿼리문 작성 4. 실행하기.
	 */
	
	public void insert(int deptno, String dname, String loc) {
		// 1
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} // 여기에 들어가는 패키지와 클래스이름은 DB마다 다를 수 있다. 오라클, Mysql(버전에 따라 다름)

		// 2
		String url = "jdbc:mysql://localhost:3306/testdb?serverTimezone=UTC"; // DB 회사마다 다르다. 상태를 말
		String user = "joe";
		String password = "1234";
		Connection conn = null;
		try {
			conn = DriverManager.getConnection(url, user, password);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} // conn은 구현할 이유가 없다 이유는 인터페이스에 구현이 되어있기 때문.
			// 3
		String sql = "insert into dept (deptno, dname, loc) values (?,?,?)";
		// statement는 쿼리문 작성 할때 인서트할때 (')를 사용해야 해서 번거롭다.
		// 예시 : String sql = "insert into dept (deptno, dname, loc) values
		// (1,'"+test+",'test')";
		// PreparedStatement는 ??? 를 사용한다.
		// 예시 : String sql = "insert into dept (deptno, dname, loc) values (?,?,?)";
		PreparedStatement ps = null;
		try {
			ps = conn.prepareStatement(sql);
			ps.setInt(1, deptno); // pk키를 계속 변경 시켜줘야한다.
			ps.setString(2, dname);
			ps.setString(3, loc);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		// 4 실행하기 select, insert, delete, update 무엇인지 구분만 하면됨
		// 쿼리문만 바꾸면 select, insert, delete, update 전부 사용할 수 있다.
		// insert
		int count;
		try {
			count = ps.executeUpdate();
			if (count > 0) {
				System.out.println(count + "입력됨");
			} else {
				System.out.println("입력 실패");
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			// 꼭 항상 닫아줘야 한다.
			try {
				ps.close();
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

UpdateExam.java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class UpdateExam {

	public void update(int deptno, String dname, String loc) {
		// 1
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} // 여기에 들어가는 패키지와 클래스이름은 DB마다 다를 수 있다. 오라클, Mysql(버전에 따라 다름)

		// 2
		String url = "jdbc:mysql://localhost:3306/testdb?serverTimezone=UTC"; // DB 회사마다 다르다. 상태를 말
		String user = "joe";
		String password = "1234";
		Connection conn = null;
		try {
			conn = DriverManager.getConnection(url, user, password);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} // conn은 구현할 이유가 없다 이유는 인터페이스에 구현이 되어있기 때문.
			// 3
		String sql = "update dept set dname = ?, loc = ? where deptno = ?";
		// statement는 쿼리문 작성 할때 인서트할때 (')를 사용해야 해서 번거롭다.
		// 예시 : String sql = "insert into dept (deptno, dname, loc) values
		// (1,'"+test+",'test')";
		// PreparedStatement는 ??? 를 사용한다.
		// 예시 : String sql = "insert into dept (deptno, dname, loc) values (?,?,?)";

		PreparedStatement ps = null;
		// 쿼리를 넣어주는 부분
		try {
			ps = conn.prepareStatement(sql);
			ps.setString(1, dname); // pk키를 계속 변경 시켜줘야한다.
			ps.setString(2, loc); // pk키를 계속 변경 시켜줘야한다.
			ps.setInt(3, deptno);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		// 4 실행하기 select, insert, delete, update 무엇인지 구분만 하면됨
		// 쿼리문만 바꾸면 select, insert, delete, update 전부 사용할 수 있다.
		// delete
		int count;
		try {
			count = ps.executeUpdate();
			if (count > 0) {
				System.out.println(count + "입력됨");
			} else {
				System.out.println("입력 실패");
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			// 꼭 항상 닫아줘야 한다.
			try {
				ps.close();
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

DeleteExam.java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class DeleteExam {

	public void delete(int deptno) {
		// 1
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} // 여기에 들어가는 패키지와 클래스이름은 DB마다 다를 수 있다. 오라클, Mysql(버전에 따라 다름)

		// 2
		String url = "jdbc:mysql://localhost:3306/testdb?serverTimezone=UTC"; // DB 회사마다 다르다. 상태를 말
		String user = "joe";
		String password = "1234";
		Connection conn = null;
		try {
			conn = DriverManager.getConnection(url, user, password);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} // conn은 구현할 이유가 없다 이유는 인터페이스에 구현이 되어있기 때문.
			// 3
		String deptName = "최정훈";
		String loc = "서울";
		String sql = "delete from dept where deptno = ?";
		// statement는 쿼리문 작성 할때 인서트할때 (')를 사용해야 해서 번거롭다.
		// 예시 : String sql = "insert into dept (deptno, dname, loc) values
		// (1,'"+test+",'test')";
		// PreparedStatement는 ??? 를 사용한다.
		// 예시 : String sql = "insert into dept (deptno, dname, loc) values (?,?,?)";

		PreparedStatement ps = null;
		// 쿼리를 넣어주는 부분
		try {
			ps = conn.prepareStatement(sql);
			ps.setInt(1, deptno); // pk키를 계속 변경 시켜줘야한다.
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		// 4 실행하기 select, insert, delete, update 무엇인지 구분만 하면됨
		// 쿼리문만 바꾸면 select, insert, delete, update 전부 사용할 수 있다.
		// delete
		int count;
		try {
			count = ps.executeUpdate();
			if (count > 0) {
				System.out.println(count + "입력됨");
			} else {
				System.out.println("입력 실패");
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			// 꼭 항상 닫아줘야 한다.
			try {
				ps.close();
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

위와같이 실행하면 된다. 

만약 에러가 난다면 Connection이 됬는지 확인할 것.

'workSpace > JAVA' 카테고리의 다른 글

[Java][mysql] 자바와 mysql을 연동한 은행 프로그램  (3) 2020.12.08
[Java][DBUtil][DAO][DTO] 방식 기본 구현법  (0) 2020.12.07
[Java][JDBC][Connection]자바에 MYSQL(workbench) 데이터베이스 연동하기  (0) 2020.12.07
[Java]About GUI  (0) 2020.09.01
[Java]자바에서 클래스를 생성하고 사용하는법  (0) 2020.06.24
    'workSpace/JAVA' 카테고리의 다른 글
    • [Java][mysql] 자바와 mysql을 연동한 은행 프로그램
    • [Java][DBUtil][DAO][DTO] 방식 기본 구현법
    • [Java][JDBC][Connection]자바에 MYSQL(workbench) 데이터베이스 연동하기
    • [Java]About GUI
    J o e
    J o e
    나의 과거를 기록합니다.

    티스토리툴바