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 |