티스토리 뷰
JDBC / 오라클 연동 / SELECT
4 –1 (자바에서 쿼리를 통해 DB정보 불러오기)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
//Dept테이블조회
public class SelectTest {
public static void main(String[] args) {
//1. DB 접속 정보
//드라이버정보
String driver = "oracle.jdbc.driver.OracleDriver"; //cracle.jdbc.driver : 패키지이름 , OracleDriver: 클래스이름
//커넥션용 3가지
String url="jdbc:oracle:thin:@localhost:1521:xe";
String userid="scott";
String pwd="tiger";
//2.드라이버 로딩 (드라이버 클래스 객체생성)
try {
Class.forName(driver); // driver << 문자열로 되있는 클래스를 메모리에 올림 (예외처리 해줘야함) - 컴파일체크드에러
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Connection con = null;
PreparedStatement pstmt=null;
ResultSet rs=null;
try {
//3. 연결 (java.sql.Connection)
con = DriverManager.getConnection(url, userid, pwd); // CMD에서 C:>> sqlplus scott/tiger ; << 여기까지 한거라고 보면됨 (연결)
//4. SQL문 작성
String sql = "select deptno, dname, loc from dept"; // CMD 에서는 select * from dept; <<처럼 마지막에 " ; " 세미콜론 주지만 자바에
서는 안줘야함, 주면에러
//5. SQL문 전송 객체 (PreparedStatement) << 얘도 java.sql패키지에있음
pstmt= con.prepareStatement(sql); //sql문 전송준비
//6. sql문 전송
//우리가 전송하는 sql문이 뭐냐에 따라서 사용하는 것이 다름
//(insert/delete/update) -> 리턴타입이 int 이므로(쿼리문 실행후 row 12.... 실제 적용된 레코드 개수 리턴) -> pstmt.executeUpdate();
// (select) -> 리턴타입이 테이블인데 자바에서는 테이블을 표현할수 없어서 클래스로 표현 (결과Set : ResultSet) ->
pstmt.executeQuery(); (일반적으로쿼리문 하면 select를 의미)
//ResultSet은 처음에 헤더 (ResultSet rs ; ) (컬럼명 을 가리기 때문에 데이터값이 들어있는 (한줄밑으로)다음행으로 옮겨주는 작업이필
요 -> rs.next (값 있나없나boolean리턴) while(rs.next())로 사용
// 컬럼이 숫자면 (int형이면) : rs.getInt(컬럼명) // 컬럼이 문자 string이면 rs.getString(컬럼명)
rs= pstmt.executeQuery(); //sql쿼리 결과값 받았음
//7.결과값 출력
while(rs.next()){
//컬럼인덱스사용
//int depto = rs.getInt(0);
//컬렴명
int deptno = rs.getInt("deptno"); // rs.getInt() 두개함수가있음 하나는 컬럼인덱스(0,1,2) / 하나는 컬렴명 : 컬럼명을 주는게 가독성이 좋
기때문에 컬럼명 쓰는게 일반적
String dname= rs.getString("dname");
String loc=rs.getString("loc");
System.out.println(deptno+"\t"+dname+"\t"+loc);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//8.자원반납 (역순으로) (충돌,에러방지)
//선언은 Connection-PreparedStatement-ResultSet 순이었지만 닫을때는 반대로!
//Connection con = null;
//PreparedStatement pstmt=null;
//ResultSet rs=null;
// 닫을때는 순서 거꾸로 닫아줘야함
try {
if(rs!=null)rs.close();
if(pstmt!=null)pstmt.close();
if(con!=null)con.close();
} catch (Exception x) {
x.printStackTrace();
}
}
}//end main
}// end class
- #7급공무원
- #경찰수당
- #ev추천
- #자동차판매순위
- #공무원시험
- #9급공무원
- #경찰공무원
- #전기차시장
- #체력시험
- #웨이브
- #경찰연봉
- #순경월급
- #전기차판매순위
- #경찰
- #경찰시험
- #마힌드라
- #byd
- #경찰승진
- #경찰월급
- #기대작드라마
- #티빙
- #경력경쟁채용
- #경찰되는법
- #판매순위
- #면접준비
- #의무경찰
- #sbs드라마
- #경찰채용
- #2025트렌드
- #정보처리기사
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |