Java support for XML schema registration and removal
The IBM® Data Server Driver for JDBC and SQLJ provides methods that let you write Java™ application programs to register and remove XML schemas and their components.
The methods are:
- >DB2Connection.registerDB2XMLSchema
- Registers an XML schema in the database manager, using one or
more XML schema documents. There are two forms of this method: one
form for XML schema documents that are input from InputStream objects,
and one form for XML schema documents that are in a
String
. - >DB2Connection.deregisterDB2XMLObject
- Removes an XML schema definition from the database manager.
- >DB2Connection.updateDB2XmlSchema
- Replaces the XML schema documents in a registered XML schema with the XML schema documents from another registered XML schema. Optionally drops the XML schema whose contents are copied. This method is available only for connections to Db2® on Linux®, UNIX, and Windows systems.
Before you can invoke these methods, the stored procedures that support these methods must be installed on the data server.
Example: Registration of an XML schema: The following example demonstrates the use of
registerDB2XmlSchema to register an XML schema in Db2, using a single XML schema document
(customer.xsd) that is read from an input stream. The SQL schema name for the registered schema is
SYSXSR. No additional properties
are registered.
public static void registerSchema(
Connection con,
String schemaName)
throws SQLException {
// Define the registerDB2XmlSchema parameters
String[] xmlSchemaNameQualifiers = new String[1];
String[] xmlSchemaNames = new String[1];
String[] xmlSchemaLocations = new String[1];
InputStream[] xmlSchemaDocuments = new InputStream[1];
int[] xmlSchemaDocumentsLengths = new int[1];
java.io.InputStream[] xmlSchemaDocumentsProperties = new InputStream[1];
int[] xmlSchemaDocumentsPropertiesLengths = new int[1];
InputStream xmlSchemaProperties;
int xmlSchemaPropertiesLength;
//Set the parameter values
xmlSchemaLocations[0] = "";
FileInputStream fi = null;
xmlSchemaNameQualifiers[0] = "SYSXSR";
xmlSchemaNames[0] = schemaName;
try {
fi = new FileInputStream("customer.xsd");
xmlSchemaDocuments[0] = new BufferedInputStream(fi);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
xmlSchemaDocumentsLengths[0] = (int) fi.getChannel().size();
System.out.println(xmlSchemaDocumentsLengths[0]);
} catch (IOException e1) {
e1.printStackTrace();
}
xmlSchemaDocumentsProperties[0] = null;
xmlSchemaDocumentsPropertiesLengths[0] = 0;
xmlSchemaProperties = null;
xmlSchemaPropertiesLength = 0;
DB2Connection ds = (DB2Connection) con;
// Invoke registerDB2XmlSchema
ds.registerDB2XmlSchema(
xmlSchemaNameQualifiers,
xmlSchemaNames,
xmlSchemaLocations,
xmlSchemaDocuments,
xmlSchemaDocumentsLengths,
xmlSchemaDocumentsProperties,
xmlSchemaDocumentsPropertiesLengths,
xmlSchemaProperties,
xmlSchemaPropertiesLength,
false);
}
Example: Removal of an XML schema: The following example demonstrates the use of
deregisterDB2XmlObject to remove an XML schema from Db2. The SQL schema name for the registered schema
is SYSXSR.
public static void deregisterSchema(
Connection con,
String schemaName)
throws SQLException {
// Define and assign values to the deregisterDB2XmlObject parameters
String xmlSchemaNameQualifier = "SYSXSR";
String xmlSchemaName = schemaName;
DB2Connection ds = (DB2Connection) con;
// Invoke deregisterDB2XmlObject
ds.deregisterDB2XmlObject(
xmlSchemaNameQualifier,
xmlSchemaName);
}
Example: Update of an XML schema: The following example
applies only to connections to Db2 on Linux, UNIX, and Windows systems.
It demonstrates the use of updateDB2XmlSchema to update the contents
of an XML schema with the contents of another XML schema. The schema
that is copied is kept in the repository. The SQL schema name for
both registered schemas is SYSXSR.
public static void updateSchema(
Connection con,
String schemaNameTarget,
String schemaNameSource)
throws SQLException {
// Define and assign values to the updateDB2XmlSchema parameters
String xmlSchemaNameQualifierTarget = "SYSXSR";
String xmlSchemaNameQualifierSource = "SYSXSR";
String xmlSchemaNameTarget = schemaNameTarget;
String xmlSchemaNameSource = schemaNameSource;
boolean dropSourceSchema = false;
DB2Connection ds = (DB2Connection) con;
// Invoke updateDB2XmlSchema
ds.updateDB2XmlSchema(
xmlSchemaNameQualifierTarget,
xmlSchemaNameTarget,
xmlSchemaNameQualifierSource,
xmlSchemaNameSource,
dropSourceSchema);
}