ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JDBC
    JSP 2014. 3. 17. 13:19

    0. 임포트

    import java.sql *;


    1. 로드

    : 연결(사용)하려는 db 드라이버 로드

    형식)

    Class.forName("연결하려는 드라이버 명");


    * 연결하려는 드라이버 명

    - ORACLE : oracle.jdbc.driver.OracleDriver

    - MS-SQL : sun.jdbc.odbc.JdbcOdbcDirver

    - My-SQL : org.git.mm.myslq.Dirver


    2. 연결

    : DB연결

    형식)

    Connection con = DriverManager.getConnection("JDBCURL","사용자명","패스워드");


    * JDBCURL

    - ORACLE : jdbc:oracle:thin:@localhost:1521:db명

    - MS-SQL : jdbc:odbc:odbc설정을 통해 만든 db원본명

    - MY-SQL : jdbc:mysql://localhost:3306/db명


    3. 실행

    : 쿼리문 실행

    형식)

    /*Statement : statement 객체를 생성하며, statement 객체는 파라미터가 없는 SQL문 전달에 사용된다.*/

    Statement stmt = con.createStatement();  ==> 그냥 외우자!!

    int i = stmt.executeUpdate("SQL문장");


    Result rs = st.executeQuery("SQL문장")

    rs = stmt.executeQuery(sql);  //  sql 이란 위에서 정의한 sql문

    rs.getString(1)  ==> 첫번째 column의 내용을 가져오기

    rs.getString("emp_no") ==> column이름이 emp_no 인거 가져오기


    하나만 가져올때는 꼭 rs.next() 해야한다.

    칼럼의 모든 값 가져오기.

    while(rs.next()) {

      System.out.print(rs.getString("emp_no"));

    }

    -------------------------------------------------------------------------------------------------

    /*Preparestatement : Connection prepareStatement() 메서드로 preparedStatemnet 객체를 생성한다. 미리 컴파일된 SQL문에 사용되는데. 이는 입력 인자로 하나 이상의 파라미터를 가질 수 있으며 인자 값을 지정하는 메소드를 갖고 잇다. 이값은 문장이 실행될 때 데이터베이스에 전달되며, preparestatement는 statement객체 보다 더 효율적일 수 잇고 여러번 반복되는 SQL문에서는 preparedStatement 객체를 사용하면 수행 능력이 statement 보다 높다



    PreparedStatement ps = con.prepareStatement("SQL문장); ex) "INSERT INTO MEMBER VALUES (?, ?, ?)"

    ps.setString(1,"data");

    ps.setInt(2,0);

    int i = ps.executeUpdate(); // INSERT, UPDATE , DELETE문 사용

                                         // 0이면 실패 1이상 성공

    ResultSet rs = ps.executeQuery()' // SELECT 문 사용



    /** ResultSet은 SELECT 쿼리의 실행 결과를 java.sql.ResultSet 객체에 담아서 리턴한다. 따라서, ResultSet 클래스가 제공하는 메서드를 사용해서 결과값을 읽어올 수 있다. ResultSet 클래스는 next() 메서드를 제공하는데, next() 메서드를 사용해서 SELECT 결과의 존재 여부를 확인할 수 있다. SELECT 쿼리의 결과를 행으로 저장하며 커서를 통해서 각 행의 데이터에 접근한다. 최초에 커서는 1행 이전에 존재하게 된다. ResultSet.next()메서드는 커서의 다음 행이 존재할 경우 true를 리턴하고 커서를 그행으로 이동시킨다. next()메서드를 계속해서 호출하면 커서는 순차적으로 다음 행으로 이동하게 된다. 마지막 행에 커서가 도달하면 next()메서드는 false를 리턴한다

    ---------------------------------------------------------------------------------------------------

    boolean b = rs. next();         // 커서 아래로 이동

                                            // true 이면 데이터 읽어옴, false 이면 읽어올 데이터 없음

    rs.getInt(1);      // 숫자로 읽어오기, 인자는 열 번호 또는 컬럼명

    rs.getString(2)     //  문자열로 읽어오기, 인자는 열 번호 또는 컬럼명



    4. 닫기

    : 리소스 해제

    형식) 

    rs.close();

    st.close();

    con.close();




    TIP..!!


    에러가 날 소지가 있기에 try catch문을 쓰자!

    <%

    Connection con = null;

    Statement stmt = null;

    ResultSet rs = null;

     

    try {

        Class.forName("oracle.jdbc.driver.OracleDriver");

       con = DriverManger.getConnection("jdbc:oracle:thisn:@211.230.51.24:1521:oradv","scoot" ,"tiger");

       String sql = "select * from emp";

       stmt = con.createStatement();

       rs = stmt.executeQuery(sql);

      while(rs.next()) {

      out.print(rs.getString(""emp_no"));

       }

     out,printlnt(con);

    } catch(Exception e) {                                        // e.getMessage() = 에러 이벤트와 함꼐 들어오는 메시지를 출력한다.

     e.printStackTrace();                                          // e.toString() = 에러 이벤트의 toString()을 호출해서 간단한 에러 메시지를 확인한다.

    }                                                                    // e.printStactTrace()  = 에러 메시지의 발생 근원지를 찾아서 단계별로 에러를 출력한다.


    %>

    'JSP' 카테고리의 다른 글

    JSP 쿠키(Cookie) 정리 및 예시!!  (0) 2014.09.29
    JSP 액셀 다운  (0) 2014.06.09
    out 내장 객체!!  (0) 2014.06.05
    파일다운로드 소스!!!! (내가 구글링하여 구현)  (0) 2014.05.12
    커넥션풀의 정의  (0) 2014.03.26
Designed by Tistory.