Statement , PreparedStatement

최주영·2023년 4월 19일
0

JDBC

목록 보기
4/5

✅ Statement

  • 외부값을 ''로 구분하여 모두 표기해야함
String sql = "SELECT * FROM MEMBER WHERE MEMBER_ID = '"+변수명+"'";  

✅ PreparedStatement

  • ?를 통해서 파라미터 바인딩이 가능하다 -> SQL Injection 공격 예방이 가능
  • 외부값을 ?표시해서 쿼리문을 작성
  • 외부값을 표시하면 꼭 모두 대입을 해줘야함
  • 위치값은 왼쪽 1부터 시작
String sql = "SELECT * FROM MEMBER WHERE MEMBER_ID=?"; 

try {
	pstmt = conn.prepareStatement(sql);  
	pstmt.setString(1,id);
	.....
    .....     
// Like 연산자가 들어갈 경우
String sql = "SELECT * FROM MEMBER WHERE MEMBER_NAME LIKE ?";
try {
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, "%"+name+"%"); // 해당하는 기호는 문자열로 인식해서 합쳐야한다 
String sql = "INSERT INTO MEMBER VALUES(?,?,?,?,?,?,?,?,?,SYSDATE)";
		// 9개의 외부값 다 넣어야한다!
		try {
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1,m.getMemberId());
			pstmt.setString(2, m.getMemberPwd());
			pstmt.setString(3, m.getMemberName());
			pstmt.setString(4, String.valueOf(m.getGender())); // 기본자료형에서 String으로 변환시킬때 사용
			pstmt.setInt(5, m.getAge());
			pstmt.setString(6, m.getEmail());
			pstmt.setString(7, m.getPhone());
			pstmt.setString(8, m.getAddress());
			pstmt.setString(9, String.join(",",m.getHobby())); // ,를 기준으로 합쳐줌
            
			rs = pstmt.executeQuery(sql);
profile
우측 상단 햇님모양 클릭하셔서 무조건 야간모드로 봐주세요!!

0개의 댓글