ITWILL학원 : 19강 JSP기초 BY 정규태강사
JDBC
- JDBC활용 - import쓰는 이유, form페이지로 받은 데이터를 DB에 insert하는 방법
- JDBC활용 - JAVA에서 DB 정보 지우기 2가지방법
- JDBC활용 - DB에서 고객정보를 불러와서 HTML테이블에 담기
- JDBC활용 - TIMESTAMP주의점, JDBC에서 데이터처리
- JDBC활용 - 회원정보수정페이지만들기
- JDBC활용 - 회원목록출력하는데 관리자는 빼고 출력하기, 자바 에러 두종류
1. import는 언제, 왜 쓸까?
어떤 건 import를 쓰고 어떤 건 import하지않고도 사용가능하다.
왜그럴까?
import가 필요없는 경우 : 기본적으로 사용 가능한 클래스인 경우이다.
- 직접구현해서 접근가능한 범위에서 만들어 놓은 클래스들
- java 활용도가 높은 클래스를 패키지 추가 없이 사용가능하도록 만들어 놓은 클래스들
- 예 ) java.lang.*은 자바에서 제공하는 기본패키지로 import없이 사용가능하다. 대표적으로 String 객체는 java.lang.*에 속해있다.
import를 써야하는 경우 : 기본제공되는 클래스가 아닌 경우 클래스가 있는 패키지를 추가(import)해야함
form페이지를 만들어서 이름과 성별, 나이, 주민번호를 사용자로부터 받은 뒤 그 데이터들을 insertPro.jsp
파일에서 불어와서 MySQL DB에 넣어보는 코드이다.
아래 코드는 form페이지는 생략하고 insertPro.jsp
만 나타낸 코드이다.
총 3단계로 이루어진다.
- form페이지에서 입력한 데이터를 변수로 불러오기
- DB연결하기
- SQL구문작성 후 stmt객체생성하기 : SQL구문작성시에는 작은 따음표와 큰 따옴표를 잘 입력해야한다.
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| //import 아래 3가지 추가됨 <%@page import="java.sql.Statement"%> <%@page import="java.sql.DriverManager"%> <%@page import="java.sql.Connection"%>
<% //1. 변수로 가져오서 데이터출력
//1-1. 파라미터값 한글처리 request.setCharacterEncoding("UTF-8");
//1-2. form태그에서 받은 모든 데이터는 string타입으로 전달되므로 -> int는 형변환필수 String name = request.getParameter("name"); int age = Integer.parseInt(request.getParameter("age")); String gender = request.getParameter("gender"); String jumin1 = request.getParameter("jumin1"); String jumin2 = request.getParameter("jumin2"); String jumin = jumin1 + "-" + jumin2; %>
이름 : <%=name %><br> 나이 : <%=age %><br> 성별 : <%=gender %><br> 주민번호 : <%=jumin %><br>
<% //2. DB에 담기 //2-1. 필요한 변수들 상수로 정리 final String DRIVER = "com.mysql.jdbc.Driver"; final String DBURL = "jdbc:mysql://localhost:3306/jspdb"; final String DBID = "root"; final String DBPW = "1234";
//2-2. 드라이버로드 Class.forName(DRIVER); System.out.println("드라이버로드성공");
//2-3. DB연결 Connection con = DriverManager.getConnection(DBURL, DBID, DBPW); System.out.println("드라이버연결");
//3. SQL구문작성, stmt 객체생성 //3-1. SQL구문작성 : 작은따옴표와 큰따옴표 주의하기 String sql= "insert into itwill_member values(null,'"+name+"','"+gender+"'," +age+",'"+jumin+"')"; //3-2. stmt 객체생성(java.sql하위의 statement사용) : sql구문을 실행하는 역할. Statement stmt = con.createStatement(); //statement객체생성완료
//3-3. stmt 실행 stmt.executeUpdate(sql); System.out.println("DB저장완료"); %>
|
MySQL가서 select * from 테이블명
명령어를 입력하면 row가 추가된 것을 확인할 수 있다.
3. PreparedStatement 객체생성
위의 sql구문작성을 보면 변수, 작은따옴표, 큰따옴표혼재되어있어서 적기에 매우 불편하다
이를 해소하기위한 객체PreparedStatement를 이용하면된다.
기존 Statement보다 처리속도도 빠르고 보안도 좋은 PreparedStatement를 사용해야한다.
아래 두 코드를 비교해보자.
3-1. Statement사용
1 2 3 4 5 6 7 8 9 10 11
| <%@page import="java.sql.Statement"%>
//1.SQL구문작성 String sql= "insert into itwill_member values(null,'"+name+"','"+gender+"'," +age+",'"+jumin+"')";
//2. stmt 객체생성(java.sql하위의 statement사용) : sql구문을 실행하는 역할. Statement stmt = con.createStatement();
//3. stmt 실행 stmt.executeUpdate(sql);
|
3-2. PreparedStatement사용
3단계 stmt 실행시 기능에 따라 쿼리구문을 두가지로 구분할수있다.
pstmt.executeUpdate() : insert, update, delete에 사용
pstmt.executeQuery() : select에 사용
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <%@page import="java.sql.PreparedStatement"%>
//1. SQL구문작성 String sql= "insert into itwill_member values(null,?,?,?,?)";
//2. pstmt 객체생성(java.sql하위의 prepareStatement사용) : sql구문을 실행하는 역할. PreparedStatement pstmt = con.prepareStatement(sql);
//물음표 값채우기 pstmt.set테이블데이터타입(물음표위치, 값) //항상 물음표 갯수와 쿼리구문갯수가 동일해야한다. pstmt.setString(1, name); pstmt.setString(2, gender); pstmt.setInt(3, age); pstmt.setString(4, jumin);
//3. pstmt 실행 : 업데이트 또는 쿼리 pstmt.executeUpdate(); //pstmt.executeQuery();
|