자바(Java)에서 DB(Oracle(Mysql)) Select 조회하는법
자바(Java)는 객체 지향 프로그래밍 언어로, 데이터베이스와 연동하기 위해 JDBC(Java Database Connectivity) API를 제공하는데요, JDBC를 사용하여 자바 소스코드에서 데이터베이스에 연결하고, 쿼리를 실행하게 됨으로써 Select를 통해 데이터를 동적으로 처리하여 자료 조회(Select)가 가능합니다. 이번 글에서는 JDBC를 사용하여 Select를 통해 오라클 DB(Oracle,Mysql)자료를 조회하는 방법에 대해 소스코드를 보며 알아보겠습니다.
0. 전체 코드(오라클 / Mysql – JDBC) – 코드별 자세한 설명은 1번부터 확인
오라클
public static void main(String[] args) {
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String userid = "scott";
String pwd = "tiger";
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
con = DriverManager.getConnection(url, userid, pwd);
String sql = "select deptno, dname, loc from dept";
pstmt = con.prepareStatement(sql);
rs = pstmt.executeQuery();
while (rs.next()) {
int deptno = rs.getInt("deptno");
String dname = rs.getString("dname");
String loc = rs.getString("loc");
System.out.println(deptno + "\t" + dname + "\t" + loc);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null)
rs.close();
if (pstmt != null)
pstmt.close();
if (con != null)
con.close();
} catch (Exception x) {
x.printStackTrace();
}
}
}
Mysql
public static void main(String[] args) {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/mydb";
String userid = "username";
String pwd = "password";
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Connection con = null;
try {
con = DriverManager.getConnection(url, userid, pwd);
} catch (SQLException e) {
e.printStackTrace();
}
String sql = "SELECT * FROM mytable";
Statement stmt = null;
ResultSet rs = null;
try {
stmt = con.createStatement();
rs = stmt.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println(id + " " + name + " " + age);
}
try {
rs.close();
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
1. DB 접속 정보 설정
JDBC를 사용하여 데이터베이스에 접속하기 위해서는 먼저 DB 접속 정보를 설정(드라이버 정보, 데이터베이스 URL, 사용자 아이디, 비밀번호 포함)
오라클
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String userid = "scott";
String pwd = "tiger";
mysql의경우 JDBC 드라이버를 로드하는 경우
String driver = "com.mysql.jdbc.Drive";
2. 드라이버 로딩
JDBC를 사용하기 위해서는 해당하는 데이터베이스의 드라이버를 메모리에 로딩(드라이버를 로딩하는 코드)
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
3. 연결 설정
드라이버를 로딩한 후에는 DriverManager.getConnection()
메서드를 사용하여 데이터베이스와의 연결을 설정
오라클
Connection con = null;
try {
con = DriverManager.getConnection(url, userid, pwd);
} catch (SQLException e) {
e.printStackTrace();
}
Mysql 의경우
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/mydb",
"username",
"password");
4. SQL문(쿼리)작성 및 실행
연결을 생성 한 후 데이터베이스 자료를 조회하기 위해 SQL문을 작성하고 쿼리를 실행
오라클
String sql = "select deptno, dname, loc from dept";
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
pstmt = con.prepareStatement(sql);
rs = pstmt.executeQuery();
while (rs.next()) {
int deptno = rs.getInt("deptno");
String dname = rs.getString("dname");
String loc = rs.getString("loc");
System.out.println(deptno + "\t" + dname + "\t" + loc);
}
} catch (SQLException e) {
e.printStackTrace();
}
Mysql의 경우
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM mytable");
쿼리 결과를 ResultSet 객체로 받아온 모든 자료를 조회(아래코드)
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println(id + " " + name + " " + age);
}
5. 자원 해제
데이터베이스 작업을 완료한 후에는 사용한 모든 자원을 반납(해제)해야 함
오라클
finally {
//자원해제(반납)은 역순으로
// 선언은 Connection - PreparedStatement - ResultSet 순이었지만 반납(해제,Close)할때는 반대로
try {
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (con != null) con.close();
} catch (Exception x) {
x.printStackTrace();
}
}
Mysql
rs.close();
stmt.close();
con.close();
결론
이번 글에서는 Java에서 데이터베이스(Oracle, Mysql)정보를 불러오는 방법에 대해 알아보았는데요, JDBC를 활용하여 데이터베이스와 연결하고 SQL문을 작성하여 데이터를 조회하는 과정순으로 알아보았습니다. 아래의 이전 글들을 통해 DML(Update, Delete, Insert) 하는 방법도 자세히 설명해 두었으니 필요 하신 분들은 읽어보시면 도움 되실겁니다. 그럼 자바 소스코드를 통하여 유연하고 효율적인 코딩 하시기 바랍니다!
이전 글 – 자바에서 Oracle DB 자료 update 하기(예제로 알아보자)
이전 글 – 자바(Java) 오라클(DB) 정보 입력(Insert)하는 방법(예시, 예제)
이전 글 – 자바를 활용한 데이터베이스 자료 삭제(Delete) – 간단한 예제로 알아보자
이전 글 – [오라클] 조인 INNER JOIN(EQUI JOIN과 NON-EQUI JOIN)에 대해 알아보자
이전 글 – 오라클 데이터 조작어 DML(INSERT, UPDATE, DELETE) 활용 방법
이전 글 – 오라클 데이터 무결성 제약조건 정리 (기본키,외래키,참조키, 제약조건 생성, 추가, 삭제, 비활성화)
이전 글 – 오라클 인덱스에 대해 알아보자 (데이터베이스 실무에서 효율적으로 사용 할 수 있는 Oracle Index)
이전 글 – 오라클 뷰(VIEW) 조회 및 사용방법 (개념과 특징,종류, 장단점, 인라인뷰)
이전 글 – 오라클 사용자 권한 제어 (4가지 – 시스템 권한, 객체 권한, 롤, 동의어)
이전 글 – 오라클(데이터 웨어하우스) 분석 함수(효과적인 데이터 다차원 분석을 위한 강력한 도구)
이전 글 – 오라클 스케줄러와 JOB 관리 방법
이전 글 – 오라클 테이블 복구(테이블 데이터 복원하기)