XML スキーマの登録および除去の Java サポート
これは、 IBM® Data Server Driver for JDBC and SQLJ Javaアプリケーションプログラムを記述して、XMLスキーマおよびそのコンポーネントを登録および削除するためのメソッドを提供します。
メソッドは、以下のとおりです。
- >DB2Connection.registerDB2XMLSchema
- 1 つ以上の XML スキーマ文書を使用して、XML スキーマをデータベース・マネージャーに登録します。 このメソッドには 2 つの形式があります。1 つは InputStream オブジェクトから入力される XML スキーマ文書用の形式で、もう 1 つは
String内の XML スキーマ文書用の形式です。 - >DB2Connection.deregisterDB2XMLObject
- データベース・マネージャーから XML スキーマ定義を除去します。
- >DB2Connection.updateDB2XmlSchema
- 登録済みの XML スキーマ内の XML スキーマ文書を登録済みの別の XML スキーマからの XML スキーマ文書で置き換えます。 オプションで、内容がコピーされた XML スキーマをドロップします。 この方法は、 Linux®、UNIX、Windowsシステム上の Db2 への接続にのみ利用可能です。
これらのメソッドを呼び出す前に、これらのメソッドをサポートしているストアード・プロシージャーを データ・サーバーにインストールする必要があります。
例: XML スキーマの登録: 以下の例では、入力ストリームから読み取られた単一の XML スキーマ文書 (customer.xsd) を使用して、XML スキーマを Db2 に登録するために、registerDb2XmlSchema を使用する方法が示されています。 登録済みのスキーマの SQL スキーマ名は SYSXSR です。 xmlSchemaLocations 値が NULL のため、Db2 では、この XML スキーマは NULL 以外の XML スキーマ・ロケーション値を提供する DSN_XMLVALIDATE の呼び出し時には検出されません。 追加のプロパティーは登録されません。
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);
} 例: XML スキーマの除去: 以下の例では、
XML スキーマを Db2 から
除去するために deregisterDb2XmlObject を使用する方法を示します。 登録済みのスキーマの SQL スキーマ名は 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);
} 例:XMLスキーマの更新 :以下の例は、 Linux、UNIX、Windowsシステム上の Db2 への接続のみに適用されます。 XML スキーマの内容を別の XML スキーマの内容で更新するために updateDB2XmlSchema を使用する方法が示されています。 コピーされたスキーマは、リポジトリー内に維持されます。 登録済みの両方のスキーマの SQL スキーマ名は 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);
}