Share via


SQLXML을 사용한 프로그래밍

JDBC 드라이버 다운로드

이 섹션에서는 Microsoft JDBC Driver for SQL Server API 메서드를 사용하여 SQLXML 개체로 관계형 데이터베이스에서 XML 문서를 저장하고 검색하는 방법을 설명합니다.

이 섹션에는 또한 SQLXML 개체 유형에 대한 정보 및 SQLXML 개체 사용과 관련된 중요 지침 및 제한 사항 목록이 포함되어 있습니다.

SQLXML 개체를 사용하여 XML 데이터 읽기 및 쓰기

다음 목록에서는 Microsoft JDBC Driver for SQL Server API 메서드를 사용하여 SQLXML 개체로 XML 데이터를 읽고 쓰는 방법을 설명합니다.

  • SQLXML 개체를 생성하려면 SQLServerConnection 클래스의 createSQLXML 메서드를 사용합니다. 이 메서드는 데이터가 포함되어 있지 않은 SQLXML 개체를 만듭니다. SQLXML 개체에 xml 데이터를 추가하려면 SQLXML 인터페이스에 지정된 setResult, setCharacterStream, setBinaryStream 또는 setString 메서드 중 하나를 호출합니다.

  • SQLXML 개체 자체를 검색하려면 SQLServerResultSet 클래스 또는 SQLServerCallableStatement 클래스의 getSQLXML 메서드를 사용합니다.

  • SQLXML 개체에서 xml 데이터를 검색하려면 SQLXML 인터페이스에 지정된 메서드 getSource, getCharacterStream, getBinaryStream 또는 getString중 하나를 사용합니다.

  • SQLXML 개체의 xml 데이터를 업데이트하려면 SQLServerResultSet 클래스의 updateSQLXML 메서드를 사용합니다.

  • SQLXML 개체를 xml 형식의 데이터베이스 테이블 열에 저장하려면 SQLServerPreparedStatement 클래스 또는 SQLServerCallableStatement 클래스의 setSQLXML 메서드를 사용합니다.

SQLXML 데이터 형식 샘플의 예제 코드는 이러한 일반적인 API 작업을 수행하는 방법을 보여 줍니다.

읽기 및 쓰기 가능한 SQLXML 개체

다음 표는 JDBC API에서 제공하는 setter, getter 및 updater 메서드에서 지원되는 SQLXML 개체 유형을 보여 줍니다. 테이블의 열은 다음을 참조합니다.

  • 메서드 이름 열에는 JDBC API에서 지원되는 getter, setter, updater 메서드가 나열됩니다.

  • Getter SQLXML 개체 열은 SQLServerCallableStatement 클래스의 getSQLXML 메서드 또는 SQLServerResultSet 클래스의 getSQLXML 메서드에 의해 만들어진 SQLXML 개체를 나타냅니다.

  • Setter SQLXML 개체 열은 SQLServerConnection 클래스의 createSQLXML 메서드에 의해 만들어진 SQLXML 개체를 나타냅니다. 아래 setter 메서드는 createSQLXML 메서드에서 만든 SQLXML 개체만 허용합니다.

메서드 이름 Getter SQLXML 개체

(읽기 가능)
Setter SQLXML 개체

(쓰기 가능)
CallableStatement.setSQLXML() 지원되지 않음 지원됨
CallableStatement.setObject() 지원되지 않음 지원됨
PreparedStatement.setSQLXML() 지원되지 않음 지원됨
PreparedStatement.setObject() 지원되지 않음 지원됨
ResultSet.updateSQLXML() 지원되지 않음 지원됨
ResultSet.updateObject() 지원되지 않음 지원됨
ResultSet.getSQLXML() 지원됨 지원되지 않음
CallableStatement.getSQLXML() 지원됨 지원되지 않음

위의 테이블에서 보이는 것과 같이 setter SQLXML 메서드는 읽을 수 있는 SQLXML 개체에서 작동하지 않습니다. 마찬가지로 getter 메서드는 쓰기 가능한 SQLXML 개체에서 작동하지 않습니다.

애플리케이션이 SQLXML 개체와 함께 소수 자릿수 또는 길이 매개 변수를 지정하여 setObject 메서드를 호출하면 해당 소수 자릿수 또는 길이 매개 변수는 무시됩니다.

SQLXML 개체 사용과 관련된 지침 및 제한 사항

응용 프로그램에서는 SQLXML 개체를 사용하여 데이터베이스에서 XML 데이터를 읽고 쓸 수 있습니다. 다음 목록에서는 SQLXML 개체를 사용할 때의 특정한 제한 사항 및 지침 정보를 제공합니다.

  • SQLXML 개체는 해당 개체가 생성된 트랜잭션 기간 동안에만 유효합니다.

  • getter 메서드에서 받은 SQLXML 개체는 데이터를 읽는 데만 사용할 수 있습니다.

  • 연결 개체에서 생성된 SQLXML 개체는 데이터를 쓰는 데만 사용할 수 있습니다.

  • 애플리케이션은 읽기 가능한 SQLXML 개체에서 하나의 getter 메서드만 호출하여 데이터를 읽을 수 있습니다. getter 메서드가 호출되면 동일한 SQLXML 개체에 대한 다른 모든 getter 또는 setter 메서드는 실패합니다.

  • 애플리케이션은 SQLXML 개체를 읽거나 쓴 후 해당 개체에서 free 메서드만 호출할 수 있습니다. 그러나 기본 열 또는 매개 변수가 활성 상태이면 반환된 스트림 또는 원본을 처리할 수 있습니다. 기본 열 또는 매개 변수가 비활성 상태가 되면 SQLXML 개체와 연결된 스트림 또는 원본이 닫힙니다. 기본 열 또는 매개 변수가 더 이상 유효하지 않으면 기본 데이터를 Stream, SAX(Simple API for XML), StAX(Streaming API for XML) getter에 사용할 수 없습니다.

  • 응용 프로그램은 쓰기 가능한 SQLXML 개체에서 하나의 setter 메서드만 호출할 수 있습니다. setter 메서드가 호출되면 동일한 SQLXML 개체에 대한 다른 모든 setter 또는 getter 메서드는 실패합니다.

  • SQLXML 개체에서 데이터를 설정하려면 응용 프로그램에서 반환된 개체의 적절한 setter 메서드와 함수를 사용해야 합니다.

  • SQLServerCallableStatement 클래스 및 SQLServerResultSet 클래스의 getSQLXML 메서드는 기본 열이 null인 경우 null 데이터를 반환합니다.

  • setter 개체는 개체가 생성된 연결을 통해 유효한 상태가 될 수 있습니다.

  • 애플리케이션은 SQLXML 인터페이스가 제공하는 setter 메서드를 사용하여 null 값을 설정할 수 없습니다. 응용 프로그램은 SQLXML 인터페이스에 제공된 setter 메서드를 사용하여 빈 문자열("")을 설정할 수 있습니다. null 값을 설정하려면 응용 프로그램에서 다음 중 하나를 호출해야 합니다.

  • XML 문서를 사용하는 경우 성능상의 이유로 DOM(문서 개체 모델) 파서 대신 SAX(Simple API for XML) 및 StAX(Streaming API for XML) 파서를 사용하는 것이 좋습니다.

XML 파서는 빈 값을 처리할 수 없습니다. 그러나 SQL Server를 사용하면 응용 프로그램이 XML 데이터 형식의 데이터베이스 열에서 빈 값을 검색하고 저장할 수 있습니다. 즉, XML 데이터를 구문 분석할 때 기본 값이 비어 있으면 파서에서 예외가 발생합니다. DOM 출력의 경우에는 JDBC 드라이버가 이 예외를 catch한 다음 오류를 발생시킵니다. SAX 및 Stax 출력의 경우 파서에서 직접 오류가 발생합니다.

선택 버퍼링 및 SQLXML 지원

SQLXML 개체에서 반환하는 이진 및 문자 스트림은 적응 또는 전체 버퍼링 모드를 준수합니다. 반면 XML 파서가 스트림이 아닌 경우 적응 또는 전체 설정을 준수하지 않습니다. 적응 버퍼링에 대한 자세한 내용은 적응 버퍼링 사용을 참조하세요.

참고 항목

XML 데이터 지원