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);
}