Programowanie za pomocą programu SQLXML

pobierz sterownik JDBC

W tej sekcji opisano, jak używać sterownika JDBC firmy Microsoft dla metod interfejsu API programu SQL Server do przechowywania i pobierania dokumentu XML w relacyjnej bazie danych z obiektami SQLXML .

Ta sekcja zawiera również informacje o typach obiektów SQLXML i zawiera listę ważnych wytycznych i ograniczeń dotyczących używania obiektów SQLXML.

Odczytywanie i zapisywanie danych XML za pomocą obiektów SQLXML

Poniższa lista zawiera opis sposobu używania sterownika JDBC firmy Microsoft dla metod interfejsu API programu SQL Server do odczytywania i zapisywania danych XML za pomocą obiektów SQLXML:

  • Aby utworzyć obiekt SQLXML, użyj metody createSQLXML klasy SQLServerConnection . Należy pamiętać, że ta metoda tworzy obiekt SQLXML bez żadnych danych. Aby dodać dane xml do obiektu SQLXML, wywołaj jedną z następujących metod określonych w interfejsie SQLXML: setResult, setCharacterStream, setBinaryStream lub setString.

  • Aby pobrać sam obiekt SQLXML, użyj metod getSQLXML klasy SQLServerResultSet lub klasy SQLServerCallableStatement .

  • Aby pobrać dane XML z obiektu SQLXML, użyj jednej z następujących metod określonych w interfejsie SQLXML: getSource, getCharacterStream, getBinaryStream lub getString.

  • Aby zaktualizować dane XML w obiekcie SQLXML, użyj metody updateSQLXML klasy SQLServerResultSet .

  • Aby zapisać obiekt SQLXML w kolumnie tabeli bazy danych typu xml, użyj metod setSQLXML klasy SQLServerPreparedStatement lub klasy SQLServerCallableStatement .

Przykładowy kod w przykładzie typu danych SQLXML pokazuje, jak wykonywać te typowe zadania interfejsu API.

Czytelne i zapisywalne obiekty SQLXML

W poniższej tabeli wymieniono typy obiektów SQLXML obsługiwane przez metody ustawiania, pobierania i aktualizatora udostępniane przez interfejs API JDBC. Kolumny w tabeli odnoszą się do następujących elementów:

Nazwa metody Obiekt Getter SQLXML

(Możliwe do odczytu)
Setter SQLXML, obiekt

(Zapisywalne)
CallableStatement.setSQLXML() Nie jest obsługiwany Wsparte
CallableStatement.setObject() Nie jest obsługiwany Wsparte
PreparedStatement.setSQLXML() Nie jest obsługiwany Wsparte
PreparedStatement.setObject() Nie jest obsługiwany Wsparte
ResultSet.updateSQLXML() Nie jest obsługiwany Wsparte
ResultSet.updateObject() Nie jest obsługiwany Wsparte
ResultSet.getSQLXML() Wsparte Nie jest obsługiwany
CallableStatement.getSQLXML() Wsparte Nie jest obsługiwany

Jak pokazano w powyższej tabeli, metody setter SQLXML nie będą działać z czytelnymi obiektami SQLXML; podobnie metody getter nie będą działać z zapisywalnymi obiektami SQLXML.

Jeśli aplikacja wywołuje metodę setObject, określając parametr scale lub length z obiektem SQLXML, parametr skalowania lub długości jest ignorowany.

Wskazówki i ograniczenia dotyczące używania obiektów SQLXML

Aplikacje mogą używać obiektów SQLXML do odczytywania i zapisywania danych XML z i do bazy danych. Poniższa lista zawiera informacje o określonych ograniczeniach i wskazówkach dotyczących korzystania z obiektów SQLXML:

  • Obiekt SQLXML może być prawidłowy tylko przez czas trwania transakcji, w której został utworzony.

  • Obiekt SQLXML odebrany z metody getter może służyć tylko do odczytywania danych.

  • Obiekt SQLXML utworzony przez obiekt połączenia może służyć tylko do zapisywania danych.

  • Aplikacja może wywołać tylko jedną metodę getter na czytelnym obiekcie SQLXML w celu odczytu danych. Po wywołaniu metody getter wszystkie inne metody getter lub setter w tym samym obiekcie SQLXML kończą się niepowodzeniem.

  • Aplikacja może wywołać tylko bezpłatną metodę w obiekcie SQLXML po jego odczytaniu lub zapisie. Jednak nadal można przetworzyć zwrócony strumień lub źródło tak długo, jak bazowa kolumna lub parametr jest aktywny. Jeśli kolumna bazowa lub parametr staną się nieaktywne, strumień lub źródło skojarzone z obiektem SQLXML zostanie zamknięte. Jeśli podstawowa kolumna lub parametr nie są już prawidłowe, podstawowe dane nie będą dostępne dla metod dostępu strumieniowego, prostego interfejsu API dla XML (SAX) i interfejsu API przesyłania strumieniowego dla XML (StAX).

  • Aplikacja może wywołać tylko jedną metodę ustawiającą na zapisywalnym obiekcie SQLXML. Po wywołaniu metody ustawiającej wszystkie inne metody ustawiające lub pobierające w tym samym obiekcie SQLXML zawodzą.

  • Aby ustawić dane w obiekcie SQLXML, aplikacja musi użyć odpowiedniej metody setter i funkcji w zwracanym obiekcie.

  • Metody getSQLXML klasy SQLServerCallableStatement i klasy SQLServerResultSet zwracają dane null, jeśli kolumna bazowa ma wartość null.

  • Obiekty ustawiania mogą być prawidłowe za pośrednictwem połączenia, w ramach którego są tworzone.

  • Aplikacje nie mogą ustawiać wartości null przy użyciu metod ustawiania udostępnianych przez interfejs SQLXML. Aplikacje mogą ustawić pusty ciąg ("") przy użyciu metod ustawiania podanych w interfejsie SQLXML. Aby ustawić wartość null , aplikacje powinny wywołać jedną z następujących metod:

  • Podczas pracy z dokumentami XML zalecamy używanie prostego interfejsu API dla xml (SAX) i interfejsu API przesyłania strumieniowego dla analizatorów XML (StAX) zamiast analizatorów modelu obiektów dokumentów (DOM) ze względu na wydajność.

Analizatory XML nie mogą obsługiwać pustych wartości. Jednak program SQL Server umożliwia aplikacjom pobieranie i przechowywanie pustych wartości z i do kolumn bazy danych typu danych XML. Oznacza to, że podczas analizowania danych XML, jeśli wartość bazowa jest pusta, analizator zgłasza wyjątek. W przypadku danych wyjściowych MODELU DOM sterownik JDBC przechwytuje ten wyjątek i zgłasza błąd. W przypadku danych wyjściowych SAX i Stax błąd pochodzi bezpośrednio z analizatora.

Obsługa buforowania adaptacyjnego i programu SQLXML

Strumienie binarne i znakowe zwracane przez obiekt SQLXML są zgodne z trybami adaptacyjnego lub pełnego buforowania. Z drugiej strony, jeśli analizatory XML nie są strumieniami, nie będą działać zgodnie z ustawieniami adaptacyjnymi ani pełnymi. Aby uzyskać więcej informacji na temat buforowania adaptacyjnego, zobacz Używanie buforowania adaptacyjnego.

Zobacz także

Obsługa danych XML