연결이 얻어지면 데이터베이스와 상호 작용할 수 있습니다. JDBC 문, CallableStatement 및 PreparedStatement Interfaces에 정의 된 메소드 및 속성을 사용하면 SQL 또는 PL/SQL 명령을 전송하고 데이터베이스에서 데이터를 수신 할 수 있습니다.
또한 SQL 데이터 유형을 사용하여 Java와 데이터베이스 간의 데이터 차이를 변환하는 데 도움이되는 방법을 정의합니다.
다음 표는 각 인터페이스를 사용하여 사용할 인터페이스를 이해하는 방법에 대한 개요를 제공합니다.
성명서 :
명세서 개체를 만듭니다
Statement Object를 사용하여 SQL 문을 실행할 수있는 경우 CreateStatement () 메소드를 사용하여 연결 객체의 메소드를 사용하여 다음 예에 표시된대로 작성해야합니다.
stmt = null; try {stmt = conn.createstatement (); . . .} catch (sqlexception e) {. . .} 마지막으로 { . . .}명령문 개체가 만들어지면 세 가지 실행 방법 중 하나로 SQL 문을 실행하는 데 사용될 수 있습니다.
부울 execute (String SQL) : resultSet 객체를 검색 할 수있는 경우 부울 값을 반환하고 그렇지 않으면 False를 반환합니다. 이 방법을 사용하여 SQL DDL 문을 실행하거나 실제 동적 SQL을 사용할 때.
int executeUpdate (String SQL) : 영향을받는 SQL 문에 의해 실행 된 행 수를 반환합니다. 이 메소드를 사용하여 실행하고 영향을받는 SQL 문 (예 : 삽입, 업데이트 또는 삭제 명령문)을 가져 오기를 바랍니다.
resultSet executeQuery (String SQL) : resultSet 객체를 반환합니다. SELECT 문을 사용하는 것처럼 결과 세트를 얻으려면이 메소드를 사용하십시오.
명세서 개체를 닫습니다.
데이터베이스 리소스를 보유하기 위해 연결 객체를 닫는 것처럼, 같은 이유로 명령문 객체를 닫아야합니다.
Close () 메소드에 대한 간단한 호출은 작업을 수행합니다. 연결 객체가 먼저 닫히면 명령문 객체도 닫습니다. 그러나 명령문 객체는 적절한 간격을 보장하기 위해 항상 명시 적으로 닫아야합니다.
stmt = null; try {stmt = conn.createstatement (); . . .} catch (sqlexception e) {. . .} 마침내 {stmt.close ();}
준비된 대상
PreparedStatement 인터페이스는 문장 인터페이스를 확장하여 몇 가지 고급 기능을 공통 문장 객체에 추가 할 수 있습니다.
명령문은 동적 매개 변수에 대한 유연성을 제공합니다.
준비된 상태 개체 생성 :
preadstatement pstmt = null; try {문자열 sql = "직원 업데이트 직원을 설정하십시오 =? where id =?"; PSTMT = CONN.PREPARESTATEMENT (SQL); . . .} catch (sqlexception e) {. . .} 마지막으로 { . . .}JDBC의 모든 매개 변수가 표시됩니까? 알려진 매개 변수 마커 인 기호. SQL 문을 실행하기 전에 값의 각 매개 변수가 제공되어야합니다.
setxxx () 메소드는 값을 매개 변수에 바인딩합니다. 여기서 xxx는 입력 매개 변수 값에 바인딩하려는 Java 데이터 유형을 나타냅니다. 값을 제공하는 것을 잊어 버리면 Sqlexection을 받게됩니다.
각 매개 변수 태그는 시퀀스 번호 위치로 참조됩니다. 첫 번째 마크는 위치 1, 다음 위치는 2 등을 나타냅니다. 이 방법은 0부터 시작하여 Java 배열 인덱싱과 다릅니다.
모든 명령문 객체 데이터베이스 (a) execute (), (b) executeQuery () 및 (c) executeUpdate ()도 준비된 스테이트 개체와 함께 작동합니다. 그러나이 방법은 입력 매개 변수를 활용할 수있는 SQL 문을 사용하도록 수정됩니다.
준비된 상태 개체를 닫습니다.
명령문 개체를 닫는 것처럼, 같은 이유로, 준비된 상태 객체도 닫아야합니다.
Close () 메소드에 대한 간단한 호출은 작업을 수행합니다. 연결 객체가 닫히면 먼저 준비된 상태를 닫습니다. 그러나 올바른 통관을 보장하기 위해 준비된 상태 객체는 항상 명시 적으로 닫아야합니다.
preadstatement pstmt = null; try {문자열 sql = "직원 업데이트 직원을 설정하십시오 =? where id =?"; PSTMT = CONN.PREPARESTATEMENT (SQL); . . .} catch (sqlexception e) {. . .} 마침내 {pstmt.close ();} 준비된 상태 인스턴스
다음은 준비된 상태를 사용하여 사용하여 켜기 및 끄기의 예입니다.
다음 예제 jdbcexample.java, 다음과 같이 컴파일하고 실행하십시오.
// 1 단계. 가져 오기 필수 패키지 java.sql.*; public class jdbcexample {// jdbc 드라이버 이름 및 데이터베이스 URL 정적 최종 문자열 jdbc_driver = "com.mysql.jdbc.driver"; 정적 최종 문자열 db_url = "jdbc : mysql : // localhost/emp"; // 데이터베이스 자격 증명 정적 최종 문자열 user = "사용자 이름"; 정적 최종 문자열 pass = "비밀번호"; public static void main (String [] args) {Connection Conn = null; 준비된 상태 stmt = null; {// 2 단계 : jdbc driver class.forname을 등록합니다 ( "com.mysql.jdbc.driver"); // 3 단계 : Connection System.out.println을 엽니 다 ( "데이터베이스 연결 ..."); conn = drivermanager.getConnection (db_url, user, pass); // 4 단계 : query system.out.println을 실행합니다 ( "statement ..."); 문자열 sql = "직원 업데이트 세트 Age =? where id =?"; stmt = conn.preparestatement (SQL); // 값을 매개 변수에 바인딩합니다. stmt.setint (1, 35); // 이것은 나이를 설정합니다 stmt.setInt (2, 102); // 이것은 ID를 설정합니다. // id = 102로 레코드의 나이를 업데이트 할 수 있습니다. int rows = stmt.executeUpdate (); System.out.println ( "행에 영향을 미쳤다 :" + 행); // 모든 레코드를 선택하고 표시하겠습니다. SQL = "ID, 첫 번째, 마지막, 직원의 연령 선택"; resultSet rs = stmt.executeQuery (SQL); // 5 단계 : 결과 세트에서 데이터 추출 while (rs.next ()) {// 열별로 검색 int id = rs.getint ( "id"); int age = rs.getint ( "Age"); 문자열 first = rs.getString ( "첫 번째"); 문자열 last = rs.getString ( "last"); // 디스플레이 값 값 system.out.print ( "id :" + id); System.out.print ( ", 나이 :" + age); System.out.print ( ", 첫 번째 :" + first); System.out.println ( ", 마지막 :" + last); } // 6 단계 : 정리 환경 rs.close (); stmt.close (); conn.close (); } catch (sqlexception se) {// jdbc se.printstacktrace ()의 오류 핸들. } catch (예외 e) {// class.forname e.printstacktrace ()의 오류를 처리합니다. } 마침내 {// 마지막으로 자원을 닫는 데 사용되는 블록 {if (stmt! = null) stmt.close (); } catch (sqlexception se2) {} // 우리가 할 수있는 것은 없습니다 {if (conn! = null) conn.close (); } catch (sqlexception se) {se.printstacktrace (); } // 종료 마침내 try} // END TRY SYSTEM.out.println ( "Goodbye!"); } // end main} // end jdbcexample이제 위의 예를 다음과 같이 컴파일하겠습니다.
C :> javac jdbcexample.java
jdbcexample을 실행할 때 다음과 같은 결과가 발생합니다.
C :> Java jdbcexample
데이터베이스에 연결 ... 진술 생성 ... 행에 영향을 미쳤습니다 : 1ID : 100, 나이 : 18, 첫 번째 : Zara, Last : Aliid : 101, Age : 25, First : Mahnaz, Last : Fatmaid : 102, Age : 35, First : Zaid, Last : 103, Age : 30, First : Sumit, Last : Mittalgodbye!