반응형
? (바인드 변수)
- 쿼리의 value값 대신 바인드변수를 넣어 변수처리 할 수 있음
- like에 바인드변수를 사용할 때는 작은따옴표를 떼고 사용해야함 (ex. ‘%나%’ → %나%)
- 테이블명과 컬럼명은 bind 변수로 처리할 수 없음
import java.sql.*;
public class Test02_selectLike {
public static void main(String[] args) {
// like 연산자 연습
// 이름에 '나' 문자가 있는 행을 조회하시오
String col = "uname";
String word = "나"; //ex) 검색어
word = word.trim(); //공백 제거
// 검색어 존재 유무 확인
if (word.length() > 0) {
//where uname like '%나%'
word = "%" + word + "%";
} else {
System.out.println("검색어가 없습니다");
return;
}
Connection conn = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@IP주소:포트번호/DB명",
"사용자",
"비밀번호"
);
System.out.println("오라클DB 서버 연결 성공");
String sql = new StringBuilder()
.append("SELECT sno, uname, kor, eng, mat, tot, aver, addr, wdate ")
.append("FROM sungjuk ")
//컬럼명은 바인드변수로 처리할 수 없어서 직접 변수처리 시킴
.append("WHERE " + col + " LIKE ? ")
.append(" ORDER BY sno DESC")
.toString();
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, word);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
System.out.print(rs.getInt("sno") + " ");
System.out.print(rs.getString("uname") + " ");
System.out.print(rs.getInt("kor") + " ");
System.out.print(rs.getInt("eng") + " ");
System.out.print(rs.getInt("mat") + " ");
System.out.print(rs.getInt("tot") + " ");
System.out.print(rs.getInt("aver") + " ");
System.out.print(rs.getString("addr") + " ");
System.out.println(rs.getString("wdate"));
}
rs.close();
pstmt.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
System.out.println("오라클DB 서버 연결 종료");
} catch (SQLException e) {}
}
}
}
}
반응형
'Back-End > Java' 카테고리의 다른 글
JDBC(1) (0) | 2023.03.27 |
---|---|
Java 복습, 예습 (0) | 2023.03.26 |
Java 과제 - 성적표 파일 입출력 (0) | 2023.03.23 |
댓글