Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
JDBC-stuurprogramma downloaden
In deze sectie wordt beschreven hoe u het Microsoft JDBC-stuurprogramma voor SQL Server-API-methoden gebruikt voor het opslaan en ophalen van een XML-document in en uit een relationele database met SQLXML-objecten .
Deze sectie bevat ook informatie over de typen SQLXML-objecten en bevat een lijst met belangrijke richtlijnen en beperkingen bij het gebruik van SQLXML-objecten.
XML-gegevens lezen en schrijven met SQLXML-objecten
In de volgende lijst wordt beschreven hoe u het Microsoft JDBC-stuurprogramma voor SQL Server-API-methoden gebruikt voor het lezen en schrijven van XML-gegevens met SQLXML-objecten:
Als u een SQLXML-object wilt maken, gebruikt u de createSQLXML-methode van de klasse SQLServerConnection . Houd er rekening mee dat met deze methode een SQLXML-object zonder gegevens wordt gemaakt. Als u XML-gegevens wilt toevoegen aan het SQLXML-object, roept u een van de volgende methoden aan die zijn opgegeven in de SQLXML-interface: setResult, setCharacterStream, setBinaryStream of setString.
Als u het SQLXML-object zelf wilt ophalen, gebruikt u de getSQLXML-methoden van de klasse SQLServerResultSet of de klasse SQLServerCallableStatement .
Als u de XML-gegevens wilt ophalen uit een SQLXML-object, gebruikt u een van de volgende methoden die zijn opgegeven in de SQLXML-interface: getSource, getCharacterStream, getBinaryStream of getString.
Als u de XML-gegevens in een SQLXML-object wilt bijwerken, gebruikt u de updateSQLXML-methode van de klasse SQLServerResultSet .
Als u een SQLXML-object wilt opslaan in een databasetabelkolom van het type XML, gebruikt u de setSQLXML-methoden van de klasse SQLServerPreparedStatement of de klasse SQLServerCallableStatement .
De voorbeeldcode in het voorbeeld van het gegevenstype SQLXML laat zien hoe u deze algemene API-taken uitvoert.
Leesbare en beschrijfbare SQLXML-objecten
In de volgende tabel ziet u welke typen SQLXML-objecten worden ondersteund door de setter-, getter- en updatermethoden die worden geleverd door de JDBC-API. De kolommen in de tabel verwijzen naar het volgende:
De kolom Methodenaam bevat de ondersteunde getter-, setter- en updatermethoden in de JDBC-API.
De kolom Getter SQLXML-object vertegenwoordigt een SQLXML-object dat wordt gemaakt door de getSQLXML-methode van de klasse SQLServerCallableStatement of de getSQLXML-methode van de klasse SQLServerResultSet .
De kolom Setter SQLXML-object vertegenwoordigt een SQLXML-object dat wordt gemaakt door de createSQLXML-methode van de klasse SQLServerConnection . Houd er rekening mee dat de onderstaande settermethoden alleen een SQLXML-object accepteren dat is gemaakt met de methode createSQLXML .
| Methodenaam | Getter SQLXML-object (Leesbaar) |
Setter SQLXML-object (Schrijfbaar) |
|---|---|---|
| CallableStatement.setSQLXML() | Niet ondersteund | Ondersteund |
| CallableStatement.setObject() | Niet ondersteund | Ondersteund |
| PreparedStatement.setSQLXML() | Niet ondersteund | Ondersteund |
| PreparedStatement.setObject() | Niet ondersteund | Ondersteund |
| ResultSet.updateSQLXML() | Niet ondersteund | Ondersteund |
| ResultSet.updateObject() | Niet ondersteund | Ondersteund |
| ResultSet.getSQLXML() | Ondersteund | Niet ondersteund |
| CallableStatement.getSQLXML() | Ondersteund | Niet ondersteund |
Zoals wordt weergegeven in de bovenstaande tabel, werken de setter SQLXML-methoden niet met de leesbare SQLXML-objecten; Op dezelfde manier werken de getter-methoden niet met de beschrijfbare SQLXML-objecten.
Als de toepassing de methode setObject aanroept door een schaal of een lengteparameter met een SQLXML-object op te geven, wordt de parameter schaal of lengte genegeerd.
Richtlijnen en beperkingen bij het gebruik van SQLXML-objecten
Toepassingen kunnen SQLXML-objecten gebruiken om de XML-gegevens van en naar de database te lezen en te schrijven. De volgende lijst bevat informatie over specifieke beperkingen en richtlijnen bij het gebruik van SQLXML-objecten:
Een SQLXML-object kan alleen geldig zijn voor de duur van de transactie waarin het is gemaakt.
Een SQLXML-object dat is ontvangen van een getter-methode, kan alleen worden gebruikt om gegevens te lezen.
Een SQLXML-object dat door het verbindingsobject is gemaakt, kan alleen worden gebruikt om gegevens te schrijven.
De toepassing kan slechts één getter-methode aanroepen op een leesbaar SQLXML-object om gegevens te lezen. Nadat de getter-methode is aangeroepen, mislukken alle andere getter- of settermethoden op hetzelfde SQLXML-object.
De toepassing kan alleen de gratis methode in het SQLXML-object aanroepen nadat deze is gelezen of geschreven. Het is echter nog steeds mogelijk om de geretourneerde stroom of bron te verwerken zolang de onderliggende kolom of parameter actief is. Als de onderliggende kolom of parameter inactief wordt, wordt de stroom of bron die is gekoppeld aan het SQLXML-object gesloten. Als de onderliggende kolom of parameter niet meer geldig is, zijn de onderliggende gegevens niet beschikbaar voor de Stream, Simple API for XML (SAX) en Streaming API for XML (StAX) getters.
De toepassing kan slechts één settermethode aanroepen voor een beschrijfbaar SQLXML-object. Nadat de settermethode is aangeroepen, mislukken alle andere setter- of getter-methoden op hetzelfde SQLXML-object.
Als u gegevens wilt instellen voor het SQLXML-object, moet de toepassing de juiste settermethode en de functies in het geretourneerde object gebruiken.
De getSQLXML-methoden van de klasse SQLServerCallableStatement en de klasse SQLServerResultSet retourneert null-gegevens als de onderliggende kolom null is.
De setterobjecten kunnen geldig zijn via de verbinding die ze hebben gemaakt.
Toepassingen mogen geen null-waarde instellen met behulp van de settermethoden die worden geleverd door de SQLXML-interface. De toepassingen kunnen een lege tekenreeks ("") instellen met behulp van de settermethoden in de SQLXML-interface. Als u een null-waarde wilt instellen, moeten de toepassingen een van de volgende aanroepen:
De setNull-methoden van de klasse SQLServerCallableStatement en de klasse SQLServerPreparedStatement .
De setObject-methoden van de klasse SQLServerCallableStatement en de klasse SQLServerPreparedStatement .
De setSQLXML-methoden van de klasse SQLServerCallableStatement en de klasse SQLServerPreparedStatement met een null-parameterwaarde .
Wanneer u met XML-documenten werkt, raden we u aan eenvoudige API voor XML-parsers (SAX) en streaming-API voor XML-parsers (StAX) te gebruiken in plaats van DOM-parsers (Document Object Model) om prestatieredenen.
XML-parsers kunnen geen lege waarden verwerken. Met SQL Server kunnen toepassingen echter lege waarden ophalen en opslaan van en naar databasekolommen van het XML-gegevenstype. Dit betekent dat bij het parseren van de XML-gegevens, als de onderliggende waarde leeg is, een uitzondering wordt gegenereerd door de parser. Voor DOM-uitvoer ondervangt het JDBC-stuurprogramma die uitzondering en genereert een fout. Voor SAX- en Stax-uitvoer komt de fout rechtstreeks uit de parser.
Adaptieve buffering en SQLXML-ondersteuning
De binaire en tekenstromen die door het SQLXML-object worden geretourneerd, gehoorzamen aan de adaptieve of volledige buffermodus. Als de XML-parsers echter geen streams zijn, voldoen ze niet aan de adaptieve of volledige instellingen. Zie Adaptieve buffering gebruiken voor meer informatie over adaptieve buffering.