티스토리 뷰

DB연동 없이 JSP 홈페이지 만들기(회원가입, 회원목록) 링크: rla5378.tistory.com/17
DB연동 없이 JSP 홈페이지 만들기(로그인 로그아웃) 링크: rla5378.tistory.com/18
DB연동 없이JSP 홈페이지 회원 수정, 회원 삭제 구현 링크: rla5378.tistory.com/19홈페이지와 연결할 DB테이블 만들기 링크: rla5378.tistory.com/21
JSP 오라클 연동 자바로 연습하기(select.java) 링크: rla5378.tistory.com/22

-selectAll.java

package jdbcBasic;

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

public class selectAll {

	public static void main(String[] args) {

		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		String url = "jdbc:oracle:thin:@localhost:1521:xe";
		String user = "jsp";
		String password = "jsp";
			
		String sql="select * from member";
		try {
			Connection con = DriverManager.getConnection(url, user, password);
			PreparedStatement ps = con.prepareStatement(sql);
			ResultSet rs= ps.executeQuery();
			
			while(rs.next()) {
				System.out.print(rs.getInt(1)+"\t");
				System.out.print(rs.getString(2)+"\t");
				System.out.print(rs.getString(3)+"\t");
				System.out.print(rs.getString(4)+"\t");
				System.out.println(rs.getString(5));
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}	
	}

}

*DB를 연동하는 내용은 select.java 글에 자세히 적어두었습니다.

selectAll.java에서는 모든 회원 정보를 출력하는 구문입니다.그렇기때문에 rs.next()구문을 while로 반복하여 전 회원 정보를 출력할 수 있습니다.


-insert.java

package jdbcBasic;

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

public class Insert {

	public static void main(String[] args) {
		
		Scanner in = new Scanner(System.in);
		System.out.print("아이디: "); 	String id=in.next();
		System.out.print("패스워드: ");	String pw=in.next();
		System.out.print("이름: "); 	String name=in.next();
		System.out.print("이메일: "); 	String email=in.next();
		
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		String url = "jdbc:oracle:thin:@localhost:1521:xe";
		String user = "jsp";
		String password = "jsp";
		String sql="insert into member values(num_seq.nextval, ?, ?, ?, ?)";
		try {
			Connection con = DriverManager.getConnection(url, user, password);
			PreparedStatement ps = con.prepareStatement(sql);
			ps.setString(1, id);
			ps.setString(2, pw);
			ps.setString(3, name);
			ps.setString(4, email);
            
			ps.executeUpdate();
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}

위의 구문에서 포인트를 뽑아서 설명해보자면


		Scanner in = new Scanner(System.in);
		System.out.print("아이디: "); 	String id=in.next();
		System.out.print("패스워드: ");	String pw=in.next();
		System.out.print("이름: "); 		String name=in.next();
		System.out.print("이메일: "); 	String email=in.next();

System.in은 키보드에서 사용자로부터 키를 입력 받기 위해서 사용합니다.

 

Scanner의 인스턴스화를 시키고 in.next()를 사용하여 키보드가 입력한 값을 String id에 넣어줍니다.

*in.next()를 키보드에서 입력을 받겠다는 의미로 생각하시면 이해가 쉽습니다.

 

ps.executeUpdate();

select일때는 excuteQuery()를 사용했지만 이 페이지는 데이터를 추가해주는 페이지이기때문에 executeUpdate()를 사용해줍니다.


-update.java

package jdbcBasic;

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

public class Update {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		System.out.println("**** 수정할 회원 정보 입력 ****");
		System.out.print("아이디 : ");		String id = in.next();
		System.out.print("패스워드 : ");		String pw = in.next();
		System.out.print("이름 : ");		String name = in.next();
		System.out.print("이메일 : ");		String email = in.next();
		
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		String url = "jdbc:oracle:thin:@localhost:1521:xe";
		String user = "jsp";
		String password= "jsp";
		String sql = "update member set pw=?, name=?, email=? where id=?";
		Connection con;
		PreparedStatement ps;
		try {
			con = DriverManager.getConnection(url, user, password);
			ps = con.prepareStatement(sql);
			ps.setString(1, pw);
			ps.setString(2, name);
			ps.setString(3, email);
			ps.setString(4, id);
			ps.executeUpdate();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

위의 insert.java와 update.java의 차이가 있다면 sql문이 다릅니다.

이번에는 있는 데이터를 업데이트 시켜주는 것 이기때문에 sql문의 update table명 set 값 을 사용해줍니다.


-delete.java

package jdbcBasic;

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 delet {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		
		System.out.print("아이디: ");
		String id = in.next();
		System.out.print("패스워드: ");
		String pw = in.next();
		
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		String url = "jdbc:oracle:thin:@localhost:1521:xe";
		String user = "jsp";
		String password = "jsp";
		Connection con;
		PreparedStatement ps;
		ResultSet rs;
		String sql="select * from member where id=?";
		try {
			con = DriverManager.getConnection(url, user, password);
			ps= con.prepareStatement(sql);
			ps.setString(1,id);
			rs=ps.executeQuery();
			if(rs.next() == true && rs.getString("pw").equals(pw)) {
				sql = "delete from member where id=?";
				ps= con.prepareStatement(sql);
				ps.setString(1,id);
				ps.executeUpdate();		
			}else {
				System.out.println("일치하지 않는다.");
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

 

이번에는 id의 값을 이용해서 입력받은 id와 DB안에 있는 id가 일치하면 해당 회원(튜플)을 삭제하는 기능입니다


String sql="select * from member where id=?";

먼저 이 sql문은 우리가 키보드에서 입력한 id를 where절에 넣어 해당 id를 키로 사용하여 그 회원의 정보를 가져오는 구문입니다.


if(rs.next() == true && rs.getString("pw").equals(pw))

rs.next()==true 는 이미 우리가 입력한 id와 DB에 id가 일치했다는 증거입니다만 && rs.getString("pw").equals(pw)를 사용해 한번더 확인을 하는 과정을 해주었습니다.


	sql = "delete from member where id=?";

id가 있고 pw도 맞다면 if문 안으로 들어와 sql문을 delete from 테이블명 where 조건식 으로 넣어줍니다.

삭제하는 기능 역시 executeUpdate()를 사용해줍니다.

 

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함