Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 오버로딩
- 국제화
- HTML
- Menu
- 메서드
- 기본
- 전화걸기
- 메소드
- Spring
- 배열
- JavaScript
- layout
- 클래스
- OGNL
- 예외처리
- JSP
- Eclips
- mybatis
- struts2
- Java
- paint
- 생성자
- 에러페이지
- oracle
- 안드로이드
- 어노테이션
- Android
- AWT
- Graphic
- 이클립스
Archives
- Today
- Total
note
PreparedStatement Statement 의 차이점(SELECT),(INSERT) 본문
파일위치
PreparedStatement
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
테이블의 레코드를 화면에 표시하는 예제
member1 테이블의 레코드를 화면에 표시하는 예제
<%
Connection conn = null;
PreparedStatement pstmt=null;
ResultSet rs = null;
try{
String jdbcUrl ="jdbc:oracle:thin:@localhost:1521:orcl";
String dbId="hr";
String dbPass="hr";
//JDBC 수행 1 단계 : jdbc driver 로드
Class.forName("oracle.jdbc.driver.OracleDriver");
//JDBC 수행 2단계: Connection 객체 생성
conn=DriverManager.getConnection(jdbcUrl,dbId,dbPass);
String sql ="select * from member1";
//JDBC 수행 3단계 : PreparedStatement 객체 생성
pstmt=conn.prepareStatement(sql);
//JDBC 수행 4단계 : sql문 실행
//JDBC 수행 5단계 : sql문의 실행으로 얻어진 레코드를 담는 ResultSet 객체 생성
//ResultSet은 커서의 개념이 있어서 next()메소드 사용시 데이터가 있는곳까지만 데이터 뽑아냄
rs=pstmt.executeQuery();
while(rs.next()){
String id = rs.getString("id");
String passwd = rs.getString("passwd");
String name = rs.getString("name");
Timestamp register = rs.getTimestamp("register");
%>
<% }
}catch(Exception e){
e.printStackTrace();
}finally{
if(rs != null)
try{rs.close();}catch(SQLException sqle){}
if(pstmt != null)
try{rs.close();}catch(SQLException sqle){}
if(conn != null)
try{rs.close();}catch(SQLException sqle){}
}
%>
아이디
패스워드
이름
가입일자
<%=id %>
<%=passwd %>
<%=name %>
<%=register.toString() %>
Statement
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
테이블의 레코드를 화면에 표시하는 예제
member1 테이블의 레코드를 화면에 표시하는 예제
<%
//PreparedStatement -> Statement 차이점
Connection conn = null;
Statement stmt=null;
//PreparedStatement pstmt=null;
ResultSet rs = null;
try{
String jdbcUrl ="jdbc:oracle:thin:@localhost:1521:orcl";
String dbId="hr";
String dbPass="hr";
//JDBC 수행 1 단계 : jdbc driver 로드
Class.forName("oracle.jdbc.driver.OracleDriver");
//JDBC 수행 2단계: Connection 객체 생성
conn=DriverManager.getConnection(jdbcUrl,dbId,dbPass);
String sql ="select * from member1";
//JDBC 수행 3단계 : Statement 객체 생성
//pstmt=conn.prepareStatement(sql);
stmt = conn.createStatement();
//JDBC 수행 4단계 : sql문 실행
//JDBC 수행 5단계 : sql문의 실행으로 얻어진 레코드를 담는 ResultSet 객체 생성
//ResultSet은 커서의 개념이 있어서 next()메소드 사용시 데이터가 있는곳까지만 데이터 뽑아냄
//rs=pstmt.executeQuery();
rs=stmt.executeQuery(sql);
//차이점은 sql문장 실행시킬때 sql을 넘김
while(rs.next()){
String id = rs.getString("id");
String passwd = rs.getString("passwd");
String name = rs.getString("name");
Timestamp register = rs.getTimestamp("register");
%>
<% }
}catch(Exception e){
e.printStackTrace();
}finally{
if(rs != null)
try{rs.close();}catch(SQLException sqle){}
if(stmt != null)
try{rs.close();}catch(SQLException sqle){}
if(conn != null)
try{rs.close();}catch(SQLException sqle){}
}
%>
아이디
패스워드
이름
가입일자
<%=id %>
<%=passwd %>
<%=name %>
<%=register.toString() %>
PreparedStatement 가 더 나은 방법이라 함
더 나은 방법이란것을 뒷받침 하기 위한 예제
INSERT
Statement 사용시 ' 사용시 에러가 났음
'' 두개 사용시 '하나만 표시가 됨
잘 들어간다
Statement 사용시 ' 사용시 에러가 났음
'' 두개 사용시 '하나만 표시가 됨
어느 사용자가 '를 사용하기 위해''를 두번 넣는 수고를 할까?
PreparedStatement 실행
잘 들어간다
PreparedStatement
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%
request.setCharacterEncoding("utf-8");
//전송된 데이터 처리
String id= request.getParameter("id");
String passwd= request.getParameter("passwd");
String name= request.getParameter("name");
//전송되지 않은 데이터를 jsp에서 생성함(날짜/시간)
Timestamp register= new Timestamp(System.currentTimeMillis());
Connection conn = null;
PreparedStatement pstmt = null;
try{
String jdbcUrl ="jdbc:oracle:thin:@localhost:1521:orcl";
String dbId="hr";
String dbPass="hr";
//JDBC 수행 1단계 : jdbc driver 로드
Class.forName("oracle.jdbc.driver.OracleDriver");
//JDBC 수행 2 단계 : Connection 객체 생성
conn =DriverManager.getConnection(jdbcUrl,dbId,dbPass);
//sql 수행문 테이블명 뒤에 부분적으로 수정할경우에는 컬럼명을 입력해야됨
//member1 (id,passwd,name,register) 모든 데이터를 추가할경우는 생략가능
String sql = "insert into member1 values(?,?,?,?)";
//JDBC 수행 3단계 : PreparedStatement 객체 생성
//위에 sql문장을 저장시키고 각물음표에 매칭시키기
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,id);
pstmt.setString(2,passwd);
pstmt.setString(3,name);
pstmt.setTimestamp(4,register);
//JDBC 수행 4단계 : SQL 문 실행
pstmt.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}finally{
//자원 정리
if(pstmt != null)
try{pstmt.close();}catch(SQLException sqle){}
if(conn != null)
try{pstmt.close();}catch(SQLException sqle){}
}
%>
레코드 삽입 (추가) 예제
member 1 테이블에 새로운 레코드를 삽입(추가) 했습니다.
Statement
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%
request.setCharacterEncoding("utf-8");
//전송된 데이터 처리
String id= request.getParameter("id");
String passwd= request.getParameter("passwd");
String name= request.getParameter("name");
//전송되지 않은 데이터를 jsp에서 생성함(날짜/시간)
Timestamp register= new Timestamp(System.currentTimeMillis());
Connection conn = null;
Statement stmt = null;
try{
String jdbcUrl ="jdbc:oracle:thin:@localhost:1521:orcl";
String dbId="hr";
String dbPass="hr";
//JDBC 수행 1단계 : jdbc driver 로드
Class.forName("oracle.jdbc.driver.OracleDriver");
//JDBC 수행 2 단계 : Connection 객체 생성
conn =DriverManager.getConnection(jdbcUrl,dbId,dbPass);
//sql 수행문 테이블명 뒤에 부분적으로 수정할경우에는 컬럼명을 입력해야됨
//member1 (id,passwd,name,register) 모든 데이터를 추가할경우는 생략가능
//직접 매칭시킴
String sql = "insert into member1 values('"+id+"','"+passwd+"','"+name+"',sysdate)";
//JDBC 수행 3단계 : Statement 객체 생성
stmt = conn.createStatement();
//JDBC 수행 4단계 : SQL 문 실행
stmt.executeUpdate(sql);
}catch(Exception e){
e.printStackTrace();
}finally{
//자원 정리
if(stmt != null)
try{stmt.close();}catch(SQLException sqle){}
if(conn != null)
try{stmt.close();}catch(SQLException sqle){}
}
%>
레코드 삽입 (추가) 예제
member 1 테이블에 새로운 레코드를 삽입(추가) 했습니다.
Statement가 코드량이 적은건 사실이지만
기능적인 문제가 있는것도 사실이다
Statement보단 PreparedStatement를 사용하는것이 낫지 않을까?
Statement보단 PreparedStatement를 사용하는것이 낫지 않을까?
'JSP > 기본' 카테고리의 다른 글
방명록 MODEL1 방식 ORACLE (0) | 2012.02.13 |
---|---|
JSP MODEL1 방식 (0) | 2012.02.10 |
JSP 자바빈 사용하기(자동 생성방법) , 액션태그,getProperty,setProperty 사용 (0) | 2012.02.08 |
JSP 세션 Session (0) | 2012.02.07 |
JSP 쿠키 생성,보기,삭제,수정 (0) | 2012.02.07 |