학원에서 자바랑 오라클을 연동하는 법을 배워서
사용자가 직접 값을 입력해
DB에 데이터를 추가(행을 추가)할 수 있는 코드를 짜보았다
package step7;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
public class DB {
//얘네는 연동 필요한 애들
public Connection conn = null;
public PreparedStatement pstmt = null;
public ResultSet rs = null;
public String driver; //드라이버 주소
public String url; //url 주소
public String uid = "hr"; //오라클 아이디
public String upw = "hr"; //비번
Scanner sc = new Scanner(System.in);
public DB() { //driver랑 url 주소 미리 생성자로 초기화
driver = "oracle.jdbc.driver.OracleDriver";
url = "jdbc:oracle:thin:@localhost:1521";
}
public void con() { //기본 커넥션하기 위한 준비(얘는 할때마다 실행되어야 함)
try {
Class.forName(driver); //드라이버 주소를 넣기
conn = DriverManager.getConnection(url,uid,upw); //url,id,pw를 이용해 커넥션 객체 생성
} catch(Exception e) {
System.out.println(e);
}
}
public void discon() { //커넥션 됐던 거 끄기
try {
if(rs!=null) { //rs가 켜져있으면 닫기
rs.close();
}
pstmt.close();
conn.close();
} catch(Exception e) {
System.out.println(e);
}
}
public void MemberInsert() { //추가
con(); //연결해주기
System.out.println("이름");
String name = sc.next();
System.out.println("주소");
String addr = sc.next();
System.out.println("전화");
String tel = sc.next();
//? 으로 하면, 순서대로 값을 넣어서 대입 가능(하나하나 안 적어도 됨)
String sql = "INSERT INTO MEMBER"
+ " VALUES(MEMBER_SEQ.NEXTVAL,?,?,?)"; //번호는 시퀀스값(자동값)이라서 사용자가 안씀
try {
pstmt = conn.prepareStatement(sql); //sql문 넣기
pstmt.setString(1, name); //첫번째 ?에 입력받은 name값 넣기...
pstmt.setString(2, addr); //두번째 ?에 입력받은 addr값 넣기...
pstmt.setString(3, tel);
pstmt.executeUpdate(); //완성한 sql문으로 테이블 내용 바꿈
discon(); //닫아주기
} catch (SQLException e) {
e.printStackTrace();
}
}
public void MemberPrint() { //전체 출력
con();
String sql = "SELECT * FROM MEMBER"; //전체 출력하는 sql문
try {
pstmt = conn.prepareStatement(sql); //sql문 넣고
rs = pstmt.executeQuery(); //쿼리 실행하기 위해 값 넣음(얘는 그냥 출력할때만 씀, 값 바꾸는 건 X)
while(rs.next()) { //해당하는 값이 있다면 출력
System.out.println("번호 : "+rs.getInt(1)); //첫번째 칼럼 출력(반환값 맞아야함, Int, String...)
System.out.println("이름 : "+rs.getString(2));
System.out.println("주소 : "+rs.getString(3));
System.out.println("전화 : "+rs.getString(4));
System.out.println("=========================");
}
} catch (SQLException e) {
e.printStackTrace();
}
discon(); //닫아주기
}
public boolean search(String name) { //검색(WHERE)
con(); //열어주기
String sql = "SELECT * FROM MEMBER WHERE NAME = ?"; //이름으로 검색
try {
pstmt = conn.prepareStatement(sql); //sql문 저장
pstmt.setString(1, name); //?에 name값 넣음
rs = pstmt.executeQuery(); //완성된 쿼리 넣기
while(rs.next()) { //쿼리에 해당하는 값이 있다면 출력
System.out.println("번호 : "+rs.getInt(1)); //첫번째 칼럼 출력(반환값 맞아야함, Int, String...)
System.out.println("이름 : "+rs.getString(2));
System.out.println("주소 : "+rs.getString(3));
System.out.println("전화 : "+rs.getString(4));
System.out.println("=========================");
}
return true; //반환값이 boolean이라 넣어줌
} catch(Exception e) {
e.printStackTrace();
} finally {
discon(); //무조건 닫아주기
}
return false;
}
public void update() { //수정
con(); //열어주기
System.out.println("수정할 사람의 이름");
String name = sc.next();
System.out.println("주소");
String addr = sc.next();
System.out.println("전화");
String tel = sc.next();
String sql = "UPDATE MEMBER"
+ " SET ADDR = ?, TEL = ?" //주소, 전화번호 수정
+ " WHERE NAME = ?"; //이름이 맞을 경우(WHERE)
try {
pstmt = conn.prepareStatement(sql); //sql문 저장
pstmt.setString(1, addr); //? 순서에 맞게 값 넣기
pstmt.setString(2, tel);
pstmt.setString(3, name);
pstmt.executeUpdate(); //쿼리 실행해서 업데이트 해주기
discon(); //닫아주기
} catch (SQLException e) {
e.printStackTrace();
}
} //전화, 주소
public void delete() { //삭제
con(); //열어주기
System.out.println("삭제할 이름");
String name = sc.next();
String sql = "DELETE MEMBER WHERE NAME = ?"; //삭제 쿼리
try {
pstmt = conn.prepareStatement(sql); //sql문 넣기
pstmt.setString(1, name); //?값에 이름 넣기
pstmt.executeUpdate(); //업데이트(테이블에 뭔가 수정값이 있는)해주기
discon(); //닫아주기
} catch(Exception e) {
e.printStackTrace();
}
}
}
메인
package step7;
import java.util.Scanner;
import step6.Product;
public class DBMain {
public static void main(String[] args) {
DB d = new DB();
Scanner sc = new Scanner(System.in);
boolean flag = true;
int i = 0;
while(flag) {
System.out.println("1.추가 2.출력 3.검색 4.수정 5.삭제 6.종료");
i=sc.nextInt();
switch(i) {
case 1: // INSERT 생산
d.MemberInsert();
break;
case 2: // SELECT 출력
d.MemberPrint();
break;
case 3: // SELECT WHERE 검색
int j;
System.out.println("검색할 이름 입력 : ");
String name = sc.next();
d.search(name);
break;
case 4: // UPDATE 수정
d.update();
break;
case 5: // DELETE 삭제
d.delete();
break;
case 6:
flag=false;
break;
default :
System.out.println("잘못 입력");
}
}
}
}
자바에서 DB랑 연동해서 값 추가나 수정 하기!
신기하다잉
728x90
'혼자서 개발새발' 카테고리의 다른 글
Spring) 1편 : ajax로 DTO 받아서 회원가입 만들고 싶었던 사람... (0) | 2022.11.11 |
---|---|
SpringMVC) 게시판에서 글 수정을 한 후 어떻게 전 페이지로 돌아갈까? (0) | 2022.11.04 |
JAVA) 멀티쓰레드를 이용해 영화관에서 티켓을 팔자! (0) | 2022.10.20 |
JAVA) 전교 등수를 계산해보자!! (1) | 2022.10.15 |
JAVA) 사용자 정의 예외 만들기 (0) | 2022.10.14 |