Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tato část popisuje, jak pomocí ovladače Microsoft JDBC pro metody rozhraní SQL Server API uložit a načíst dokument XML do relační databáze s objekty SQLXML .
Tato část obsahuje také informace o typech objektů SQLXML a poskytuje seznam důležitých pokynů a omezení při používání objektů SQLXML.
Čtení a zápis dat XML pomocí objektů SQLXML
Následující seznam popisuje použití ovladače Microsoft JDBC pro metody rozhraní SQL Server API ke čtení a zápisu dat XML pomocí objektů SQLXML:
K vytvoření objektu SQLXML použijte metodu createSQLXML třídy SQLServerConnection . Všimněte si, že tato metoda vytvoří objekt SQLXML bez jakýchkoli dat. Chcete-li přidat xml data do objektu SQLXML, zavolejte jednu z následujících metod, které jsou zadány v rozhraní SQLXML: setResult, setCharacterStream, setBinaryStream nebo setString.
K načtení samotného objektu SQLXML použijte metody getSQLXML třídy SQLServerResultSet nebo SQLServerCallableStatement třídy.
Chcete-li načíst xml data z SQLXML objektu, použijte jednu z následujících metod, které jsou zadány v rozhraní SQLXML: getSource, getCharacterStream, getBinaryStream nebo getString.
Chcete-li aktualizovat data XML v objektu SQLXML, použijte metodu updateSQLXML třídy SQLServerResultSet .
Chcete-li uložit objekt SQLXML ve sloupci databázové tabulky typu xml, použijte metody setSQLXML třídy SQLServerPreparedStatement nebo SQLServerCallableStatement třídy.
Ukázkový kód v ukázce datového typu SQLXML ukazuje, jak provádět tyto běžné úlohy rozhraní API.
Čitelné a zapisovatelné objekty SQLXML
Následující tabulka uvádí, které typy objektů SQLXML podporují metody setter, getter a updater poskytované rozhraním API JDBC. Sloupce v tabulce odkazují na následující:
Sloupec Název metody uvádí podporované metody getter, setter a updater v rozhraní API JDBC.
Sloupec Getter SQLXML Object představuje objekt SQLXML, který je vytvořen metodou getSQLXML třídy SQLServerCallableStatement nebo getSQLXML třídy SQLServerResultSet .
Sloupec Setter SQLXML Object představuje objekt SQLXML, který je vytvořen metodou createSQLXML třídy SQLServerConnection. Všimněte si, že níže uvedené metody setter přijímají pouze objekt SQLXML vytvořený metodou createSQLXML .
| Název metody | Getter SQLXML – objekt (Čitelné) |
SQLXML Setter objekt (Zapisovatelný) |
|---|---|---|
| CallableStatement.setSQLXML() | Nepodporováno | Podporováno |
| CallableStatement.setObject() | Nepodporováno | Podporováno |
| PreparedStatement.setSQLXML() | Nepodporováno | Podporováno |
| PreparedStatement.setObject() | Nepodporováno | Podporováno |
| ResultSet.updateSQLXML() | Nepodporováno | Podporováno |
| ResultSet.updateObject() | Nepodporováno | Podporováno |
| ResultSet.getSQLXML() | Podporováno | Nepodporováno |
| CallableStatement.getSQLXML() | Podporováno | Nepodporováno |
Jak je znázorněno v tabulce výše, metody setter SQLXML nebudou fungovat s čitelnými objekty SQLXML; podobně metody getter nebudou fungovat s zapisovatelnými objekty SQLXML.
Pokud aplikace vyvolá metodu setObject zadáním parametru měřítka nebo délky s objektem SQLXML, je parametr měřítka nebo délky ignorován.
Pokyny a omezení při používání objektů SQLXML
Aplikace mohou používat objekty SQLXML ke čtení a zápisu dat XML z a do databáze. Následující seznam obsahuje informace o konkrétních omezeních a doprovodných materiálech při používání objektů SQLXML:
Objekt SQLXML může být platný pouze po dobu trvání transakce, ve které byla vytvořena.
Objekt SQLXML přijatý z metody getter lze použít pouze ke čtení dat.
Objekt SQLXML vytvořený objektem připojení lze použít pouze k zápisu dat.
Aplikace může vyvolat pouze jednu metodu getter u čitelného objektu SQLXML pro čtení dat. Po vyvolání metody getter všechny ostatní metody getter nebo setter ve stejném objektu SQLXML selžou.
Aplikace může vyvolat pouze bezplatnou metodu u objektu SQLXML poté, co je přečtena nebo zapsána do. Vrácený datový proud nebo zdroj je ale stále možné zpracovat, pokud je aktivní základní sloupec nebo parametr. Pokud se základní sloupec nebo parametr změní na neaktivní, datový proud nebo zdroj přidružený k objektu SQLXML se zavře. Pokud podkladový sloupec nebo parametr již nejsou platné, podkladová data nebudou k dispozici pro gettery Stream, Simple API pro XML (SAX) a Streaming API pro XML (StAX).
Aplikace může vyvolat pouze jednu metodu setter u zapisovatelného objektu SQLXML. Po vyvolání metody setter všechny ostatní metody setter nebo getter ve stejném objektu SQLXML selžou.
Chcete-li nastavit data v objektu SQLXML, musí aplikace použít odpovídající metodu setter a funkce ve vráceném objektu.
Metody getSQLXML třídy SQLServerCallableStatement a třída SQLServerResultSet vrátí null data, pokud je podkladový sloupec null.
Objekty setter mohou být platné v rámci připojení, ve kterém jsou vytvořeny.
Aplikace nemohou nastavit hodnotu null pomocí metod setter poskytovaných rozhraním SQLXML. Aplikace mohou nastavit prázdný řetězec ("") pomocí metod setter poskytovaných v rozhraní SQLXML. Pokud chcete nastavit hodnotu null , aplikace by měly volat jednu z následujících metod:
Metody setNull třídy SQLServerCallableStatement a třídy SQLServerPreparedStatement.
Metody setObject tříd SQLServerCallableStatement a SQLServerPreparedStatement.
Metody setSQLXML třídy SQLServerCallableStatement a třídy SQLServerPreparedStatement s parametrem, který má hodnotu null.
Při práci s dokumenty XML doporučujeme z důvodu výkonu použít analyzátory Simple API for XML (SAX) a Streaming API for XML (StAX) místo modelu Document Object Model (DOM).
Analyzátory XML nemohou zpracovat prázdné hodnoty. SQL Server však umožňuje aplikacím načítat a ukládat prázdné hodnoty z a do databázových sloupců datového typu XML. To znamená, že při analýze dat XML, pokud je podkladová hodnota prázdná, parser vyvolá výjimku. U výstupů DOM ovladač JDBC tuto výjimku zachytí a vyvolá chybu. Pro výstupy SAX a Stax pochází chyba přímo z analyzátoru.
Podpora adaptivního ukládání do vyrovnávací paměti a JAZYKa SQLXML
Binární datové proudy a datové proudy znaků vrácené objektem SQLXML dodržují režimy adaptivního nebo úplného ukládání do vyrovnávací paměti. Na druhou stranu, pokud analyzátory XML nejsou streamy, nebudou poslouchat adaptivní nebo úplné nastavení. Další informace o adaptivním ukládání do vyrovnávací paměti najdete v tématu Použití adaptivního ukládání do vyrovnávací paměti.