-
SQL의 Select구문을 이용하기JAVA/DataBase 2020. 10. 19. 23:44
SQL Scrapbook에서 오라클의 HR 데이터베이스에 하나의 테이블을 만들어서 데이터를 추가한 후에 자바로
데이터 탐색을 해보자.
SQL Scrapbook에서 다음과 같이 명령어를 적고 실행해서 테이블을 만들고 데이터를 추가해보자.
오라클에서 했던 때와 마찬가지로 블록 단위로 드래그를 해서 우클릭한 후에 Execute Selected Text를 클릭하면 된다.
Select구문은 DB에서 데이터를 가지고 오는 쿼리이다. 즉, DB에서 자바로 데이터를 가지고 오는 것이다.
데이터를 가지고 오는 것이기 때문에 데이터를 저장할 collection framework가 필요하다.자바에서 클래스를 다음과 같이 만들자.
프로그램 실행결과
소스 코드
더보기import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; // 오라클에 접속하면, 가장 기본적인 SQL의 select 구문을 실행해보자. public class SelectDB { public static void main(String[] args) throws ClassNotFoundException, SQLException { Class.forName("oracle.jdbc.driver.OracleDriver"); Connection conn = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:xe", "HR", "1234"); if (conn == null) {System.out.println("DB접속에 실패");} else {System.out.println("DB접속 성공");} // 접속에 성공하면 conn객체를 이용해서 SQL문을 작성해서 데이터베이스에서 데이터 가져오기 Statement stmt = null; ResultSet rs = null; // Frame work의 Set String sql = "select * from message"; stmt = conn.createStatement(); // 위의 SQL문을 처리하기 위해 객체 생성 rs = stmt.executeQuery(sql); // 작성한 문장을 대입 // 결과를 가지고 출력하는 방법 살펴보기. DB의 필드의 데이터 타입을 잘 기억하고 있어야 한다. while (rs.next()) { int no = rs.getInt(1); String name = rs.getNString(2); String content = rs.getNString("content"); // 열의 이름을 가지고 데이터 가지고 오기 System.out.printf("%d %s %s \n",no,name,content); } rs.close(); stmt.close(); conn.close(); } }
위에서 예외처리를 메인함수에서 예외를 날리는데,
try ~ catch문으로 바꿔쓰면 다음과 같다.
프로그램 실행결과
소스 코드
더보기import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class TrySelectDB { public static void main(String[] args) { Connection conn = null; Statement stmt = null; ResultSet rs = null; String sql = "select * from message"; try { Class.forName("oracle.jdbc.driver.OracleDriver"); conn = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:xe", "HR", "1234"); if (conn == null) {System.out.println("DB접속에 실패");} else {System.out.println("DB접속 성공");} stmt = conn.createStatement(); // 위의 SQL문을 처리하기 위해 객체 생성 rs = stmt.executeQuery(sql); // 작성한 문장을 대입 // 결과를 가지고 출력하는 방법 살펴보기. DB의 필드의 데이터 타입을 잘 기억하고 있어야 한다. while (rs.next()) { int no = rs.getInt(1); String name = rs.getNString(2); String content = rs.getNString("content"); // 열의 이름을 가지고 데이터 가지고 오기 System.out.printf("%d %s %s \n",no,name,content); } } catch(Exception e) {System.err.println(e);} finally // 디버깅 해본 결과 finally 블록을 쓰지 않아도 된다. { try {rs.close();} catch (SQLException e) {e.printStackTrace();} try {stmt.close();} catch (SQLException e) {e.printStackTrace();} try {conn.close();} catch (SQLException e) {e.printStackTrace();} } } }
PreparedStatement을 이용해서, 위의 데이터를 탐색하는 프로그램을 다음과 같이 쓸 수 있다.
소스 코드
더보기import java.sql.*; public class SelectDB { public static void main(String[] args) throws ClassNotFoundException, SQLException { //1.ojdbc6.jar 드라이버를 라이브러리로 포함(bulid path) //2.드라이버 로딩 Class.forName("oracle.jdbc.driver.OracleDriver"); Connection conn=DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:xe","hr","1234"); //url,id,password if(conn==null) {System.out.println("DB접속에 실패");} System.out.println("DB접속 성공"); //sql문을 작성해서 conn객체를 이용하여 데이터 베이스에 데이터 가져오기 String sql="select * from message where no=?"; PreparedStatement pstmt=conn.prepareStatement(sql);//위의 sql문을 처리하기 위해 객체 생성 pstmt.setInt(1, 3); ResultSet rs=pstmt.executeQuery(); //결과를 가지고 출력하는 방법 알아보기 while(rs.next()) { int no=rs.getInt(1); String name=rs.getString(2); String content=rs.getNString("content"); System.out.printf("%d %s %s \n",no, name, content); } rs.close(); pstmt.close(); conn.close(); } }
'JAVA > DataBase' 카테고리의 다른 글
데이터를 입력받아 DB에 접근하기 (0) 2020.10.20 SQL의 Delete구문을 이용하기 (0) 2020.10.20 SQL의 Update구문을 이용하기 (0) 2020.10.20 SQL의 Insert구문을 이용해서 데이터 저장하기 (0) 2020.10.19 DB(Oracle)와 자바를 연결하기 (0) 2020.10.19