setFetchSize(int) 메소드는 ResultSet에 더 많은 행이 필요할 때 데이터베이스에서 읽을 행 수를 정의합니다. setFetchSize(int)는 데이터베이스가 ResultSet 데이터를 반환하는 방법에 영향을 줍니다. 반면 setMaxRows(int) ResultSet의 메소드는 ResultSet이 한 번에 포함할 수 있는 행 수를 지정합니다. setMaxRows(int)는 클라이언트 측 JDBC 객체에 영향을 줍니다.
JDBC는 거의 모든 SQL 데이터 유형에 대한 지원을 제공합니다. JDBC 드라이버가 Java 애플리케이션에서 호출을 수신할 때마다 JDBC 드라이버는 내부의 Java 데이터 유형을 해당 SQL 데이터 유형으로 변환합니다. 변환 프로세스는 기본 매핑을 따릅니다. 다음은 JDBC에서 지원하는 데이터 유형과 해당 SQL 데이터 유형의 목록입니다. SQL JDBC/자바 VARCHAR java.lang.String 문자 java.lang.String LONGVARCHAR java.lang.String 비트 부울 숫자 java.
ResultSetMetaData 열 수, 열 이름, 열 데이터 유형, 테이블 이름 등과 같이 얻은 ResultSet 개체에 대한 정보를 제공합니다. 다음은 ResultSetMetaData의 몇 가지 방법입니다. 수업. 메서드 설명 getColumnCount() 현재 ResultSet 개체의 열 수를 검색합니다. getColumnLabel() 사용할 열의 제안된 이름을 검색합니다. getColumnName() 열의 이름을 검색합니다. getTableName() 테이블의 이름을 검색합니다. 예시 import ja
레코드, 레코드 세트, 데이터베이스 테이블, 테이블 공간 등을 잠글 수 있으며 잠긴 값을 변경할 수 없습니다. 다음은 JDBC의 잠금 유형입니다. 행 및 키 잠금: 특정 행을 잠그는 데 사용됩니다. 이러한 잠금을 사용하면 동시성을 달성할 수 있습니다. 페이지 잠금: 페이지를 잠그는 데 사용됩니다. 이것을 적용하면 행의 내용이 변경될 때마다 데이터베이스는 행을 보유하고 있는 전체 페이지를 잠급니다. 한 번에 많은 수의 행을 업데이트/변경해야 하는 경우 이 잠금을 사용할 수 있습니다. 테이블 잠금: 두 종류의 테이블 잠
데이터베이스를 커밋하면 특정 시점까지 수행된 모든 변경 사항이 저장됩니다. commit()을 사용하여 데이터베이스를 커밋할 수 있습니다. 방법. 문제가 발생할 때마다 rollback()을 사용하여 데이터베이스를 이 지점으로 되돌릴 수 있습니다. 방법. 기본적으로 일부 데이터베이스는 데이터베이스를 자동으로 커밋합니다. 그러나 트랜잭션을 관리하는 동안 데이터베이스를 수동으로 커밋해야 합니다. 이 시나리오에서는 setAutoCommit() 메서드를 사용할 수 있습니다. 이 메소드는 Connection 인터페이스에 속하며 부울 값을 받
결과 집합에는 순방향 전용과 양방향의 두 가지 유형이 있습니다. 결과 집합만 전달: 커서가 한 방향으로만 이동하는 ResultSet 객체를 순방향 전용 ResultSet이라고 합니다. 기본적으로 JDBC 결과 세트는 순방향 전용 결과 세트입니다. 앞으로만 ResultSets의 커서를 이동할 수 있습니다. next() 사용 ResultSet 인터페이스의 메소드 포인터를 현재 위치에서 다음 행으로 이동합니다. 이 메서드는 부울 값을 반환합니다. 현재 위치 옆에 행이 없으면 false를 반환하고, 그렇지 않으면 true를 반환합니다.
SQLException은 드라이버와 데이터베이스 모두에서 발생할 수 있습니다. 이러한 예외가 발생하면 SQLException 유형의 개체가 catch 절에 전달됩니다. 전달된 SQLException 개체에는 예외에 대한 추가 정보를 검색하는 데 사용할 수 있는 다음 메서드가 있습니다. 메소드 설명 getErrorCode() 예외와 관련된 오류 번호를 가져옵니다. getMessage() 드라이버가 처리하는 오류에 대한 JDBC 드라이버의 오류 메시지를 가져오거나 데이터베이스 오류에 대한 Oracle 오류 번호 및 메시지를 가져
다음() ResultSet 인터페이스의 메소드는 현재 ResultSet 객체의 포인터/커서를 현재 위치에서 다음 행으로 이동합니다. 이 메서드는 부울 값을 반환합니다. 현재 위치 옆에 행이 없으면 이 메서드는 false를 반환하고 그렇지 않으면 true를 반환합니다. 따라서 while 루프에서 이 방법을 사용하면 ResultSet 객체의 내용을 반복할 수 있습니다. while(rs.next()){ } 각 레코드의 열 값 가져오기 결과 집합 인터페이스(또한)는 행의 각 열에서 값을 검색하는 getter 메서드(getXXX())를
다음은 RowSet과 ResultSet의 차이점입니다. 결과 집합 행 집합 ResultSet은 항상 데이터베이스와의 연결을 유지합니다. RowSet은 데이터베이스에 연결하거나 연결을 끊을 수 있습니다. 직렬화할 수 없습니다. RowSet 객체는 직렬화될 수 있습니다. ResultSet 개체는 네트워크를 통해 다른 개체를 전달할 수 없습니다. 네트워크를 통해 RowSet 개체를 전달할 수 있습니다. ResultSet 객체는 JavaBean 객체가 아닙니다. executeQuery()를 사용하여 결과 세트를 생성/얻을 수 있
저장 프로시저의 장점은 다음과 같습니다. 저장 프로시저는 컴파일되어 저장되기 때문에 프로시저를 호출할 때마다 응답이 빠릅니다. 프로시저에서 필요한 모든 SQL 문을 그룹화하여 한 번에 실행할 수 있습니다. 프로시저가 클라이언트보다 빠른 데이터베이스 서버에 저장되기 때문입니다. 그것을 사용하여 모든 복잡한 쿼리를 실행할 수 있으므로 더 빠릅니다. 프로시저를 사용하면 코드의 반복을 피할 수 있으며 저장 함수 호출과 같은 추가 SQL 기능을 사용할 수 있습니다. 저장 프로시저를 컴파일하면 여러 응용 프로그램에서
RowSet은 ResultSet의 래퍼입니다. 물체. 데이터베이스에서 연결, 연결 해제 및 직렬화할 수 있습니다. 속성을 설정하여 JavaBean 구성 요소를 유지 관리합니다. 네트워크를 통해 RowSet 객체를 전달할 수 있습니다. 기본적으로 RowSet 개체는 스크롤 및 업데이트 가능하며 ResultSet 개체를 스크롤 및 업데이트할 수 있도록 만드는 데 사용됩니다. 를 사용하여 RowSet을 얻을 수 있습니다. RowSetProvider.newFactory().createJdbcRowSet() 방법. 예시 데이터베이스에
ResultSet의 내용을 업데이트하려면 다음과 같이 업데이트 가능한 ResultSet 유형을 전달하여 명령문을 생성해야 합니다. //Creating a Statement object Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); getXXX() 및 setXXX() 메서드와 마찬가지로 ResultSet 인터페이스도 결과 집합 updateXXX()의 행 내용을 업데이트하는 메서드를 제공합니다. 이
CallableStatement 인터페이스를 사용하여 SQL 저장 프로시저를 호출할 수 있습니다. Callable 문은 입력 매개변수, 출력 매개변수 또는 둘 다를 가질 수 있습니다. CallableStatement의 개체를 만들 수 있습니다. (인터페이스) prepareCall() 사용 연결 방법 상호 작용. 이 메서드는 저장 프로시저를 호출하는 쿼리를 나타내는 문자열 변수를 허용하고 CallableStatement를 반환합니다. 개체. 프로시저 이름이 myProcedure라고 가정합니다. 데이터베이스에서 다음과 같이 호출 가
JDBC 프로그램이 끝나면 명시적으로 데이터베이스에 대한 모든 연결을 닫아 각 데이터베이스 세션을 종료해야 합니다. 그러나 잊어버리면 Java의 가비지 수집기가 오래된 개체를 정리할 때 연결을 닫습니다. 특히 데이터베이스 프로그래밍에서 가비지 수집에 의존하는 것은 매우 좋지 않은 프로그래밍 방식입니다. 항상 연결 객체와 연결된 close() 메서드로 연결을 닫는 습관을 들이셔야 합니다. 연결이 닫혔는지 확인하기 위해 코드에 finally 블록을 제공할 수 있습니다. finally 블록은 예외 발생 여부에 관계없이 항상 실행됩니다
Statement 개체, 특히 insert 문을 사용하여 명령문을 실행하는 동안 쿼리가 실행될 때마다 전체 명령문이 컴파일되고 반복해서 실행됩니다. 여기서 이러한 명령문 사이의 유일한 차이점은 명령문의 값입니다. 반면 준비된 명령문은 미리 컴파일된 명령문입니다. 즉, 쿼리가 컴파일되어 데이터베이스에 저장되고 값 대신 자리 표시자(?)를 사용하여 이러한 자리 표시자에 값이 나중에 제공됩니다. 따라서 명령문의 반복적인 불필요한 컴파일과 실행을 피합니다. 예시 Dataset이라는 테이블이 있다고 가정해 보겠습니다. mobile_br
다음은 준비된 진술의 장점입니다. 명령문의 다중 컴파일 및 실행을 피함으로써 준비된 명령문이 더 빠르게 수행됩니다. 준비된 문을 사용하여 BLOB, CLOB, OBJECT와 같은 고급 데이터 유형에 값을 쉽게 삽입할 수 있으며 PreparedStatement 인터페이스에서 제공하는 setter 메서드를 사용합니다. 값을 설정하는 setter 메소드를 제공함으로써 준비된 문장은 쿼리에서 따옴표 및 기타 특수 문자의 사용을 피함으로써 SQL 주입 공격을 피할 수 있습니다. 다음은 준비된 진술의 제한 사항입니다.
저장 프로시저는 SQL 카탈로그에 저장되는 SQL 문의 세그먼트인 서브 루틴입니다. 관계형 데이터베이스(Java, Python, PHP 등)에 액세스할 수 있는 모든 애플리케이션은 이러한 절차에 액세스할 수 있습니다. 저장 프로시저에는 IN 및 OUT 매개변수 또는 둘 다 포함됩니다. SELECT 문을 사용하는 경우 결과 집합을 반환할 수 있으며 여러 결과 집합을 반환할 수 있습니다. 예시 Dispatches라는 테이블이 있다고 가정합니다. 다음 데이터가 있는 MySQL 데이터베이스: +--------------+--------
프로시저와 마찬가지로 데이터베이스에 함수를 만들어 저장할 수도 있습니다. 구문 다음은 (MySQL) 데이터베이스에서 함수를 생성하는 구문입니다. CREATE FUNCTION Function_Name(input_arguments) RETURNS output_parameter BEGIN declare variables; statements . . . . . . . . . . return data_type; END 예시 Emp라는 테이블이 있
다음은 함수와 프로시저의 주요 차이점입니다. 함수 절차 함수는 반환 유형이 있고 값을 반환합니다. 프로시저에 반환 유형이 없습니다. 그러나 OUT 매개변수를 사용하여 값을 반환합니다. 데이터 조작 쿼리에는 함수를 사용할 수 없습니다. 함수에서는 선택 쿼리만 허용됩니다. 삽입, 업데이트, 선택 등과 같은 DML 쿼리를 프로시저와 함께 사용할 수 있습니다. 함수는 출력 매개변수를 허용하지 않습니다. 프로시저는 입력 및 출력 매개변수를 모두 허용합니다. 함수 내에서 트랜잭션을 관리할 수 없습니다. 프로시저 내에서 트랜잭션을 관리
결과 집합 JDBC의 인터페이스는 SQL 쿼리에 의해 생성된 테이블 형식 데이터를 나타냅니다. 현재 행을 가리키는 커서가 있습니다. 처음에 이 커서는 첫 번째 행 앞에 위치합니다. 결과 집합 전체에서 포인터 이동 다음() ResultSet 인터페이스 메소드 현재(ResultSet) 개체의 포인터를 현재 위치에서 다음 행으로 이동합니다. 이 메서드는 부울 값을 반환하고 현재 위치 옆에 행이 없으면 false를 반환하고 그렇지 않으면 true를 반환합니다. 따라서 while 루프에서 이 방법을 사용하면 결과 집합의 내용을 반복할