次のサンプルは、XMLドライバの使用を開始するときに役立ちます。
ソースの場所: /demo/xml/samples/Employee.java
この簡単なJavaの例では、XMLファイルに接続し、XMLファイルのデータの読取りおよび更新を行う方法を示します。DTDファイル/demo/xml/employee.dtdによって記述されているファイル/demo/xml/employee.xmlを使用します。
XMLファイルへの接続およびデータの読取りと書込みに関する重要な手順について、次に詳しく説明します。
OracleDI Driver for XMLを通してXMLファイルに接続するには、最初にJavaプログラムで次の操作を実行する必要があります。
ドライバを含むクラスをロードして登録します。
ドライバのクラス名はcom.sunopsis.jdbc.driver.xml.SnpsXmlDriverです。
有効なURLを作成します。
URLの書式はjdbc:snps:xml?Parametersです。
注意: ドライバ・パラメータの詳細は、「ドライバの構成」を参照してください。
XMLファイルに対する接続を開きます。
次のサンプル・コードは、接続の開始方法を示しています。
// ドライバ・クラスをロードして登録します。
Class.forName("com.sunopsis.jdbc.driver.xml.SnpsXmlDriver");
// employee.xmlサンプル・ファイルを接続するためのURLを作成します。
String url = "jdbc:snps:xml?f=../xml/employee.xml";
// 特定のURLに対するJDBC接続を開きます。
Connection conn = DriverManager.getConnection(url);
OracleDI Driver for XMLを使用すると、リレーショナル構造としてのXMLデータをスキーマにロードできます。このスキーマは、メモリーまたはデータベースに格納できます。XMLデータを操作するには、先にスキーマにロードする必要があります。XMLデータをロードするには、LOAD文またはSYNCHRONIZE文を使用できます。
// SYNCHRONIZE操作を実行し、デフォルト・スキーマのXMLファイルをメモリーにロードします。
Statement s = conn.createStatement();
s.execute("SYNCHRONIZE FROM FILE");
注意: この文はXMLドライバ固有のコマンドですが、JDBC接続を介して標準SQL文として発行します。ドライバがサポートする特定のコマンドの詳細は、「ドライバ・コマンドの詳細」を参照してください。
注意: この例では、SYNCHRONIZE操作は厳密には必要ありません。接続時に、まだ存在していないスキーマは自動的にロードされます。
データをスキーマにロードすると、次のような標準のSQL問合せを実行して、データを選択、編集または更新できます。
// XMLタグの内容<person id ="xxx" salary="yyy">に対応するデータのスキーマを問い合せます。
ResultSet EmployeeList = s.executeQuery("SELECT id, salary FROM person");
while (EmployeeList.next())
{
System.out.println(EmployeeList.getString("id") + " has a salary of $" + EmployeeList.getString("salary"));
}
// スキーマに対して2つの更新操作を実行します。
// - salaryがNullの場合は、値0を設定します。
// - salaryを100増やします。
s.execute("UPDATE person SET salary = '0' WHERE salary IS NULL");
s.execute("UPDATE person SET salary = CAST(salary AS NUMERIC) + 100");
注意: これらの文では、ドライバの組込みエンジンのSQL機能を使用しています。ドライバのSQL機能の詳細は、「SQL構文」を参照してください。
XMLファイルでの作業が終了したら、XML接続を閉じる必要があります。スキーマのデータを変更した場合は、接続を閉じる前に、SYNCHRONIZEコマンドを使用して変更をファイルにコミットする必要があります。
// スキーマとファイルのデータを同期化します。
s.execute("SYNCHRONIZE ALL");
最後に、XMLドライバに対するJDBC接続を閉じる必要があります。
// 接続を閉じます。
s.close();
conn.close();
OSシェルを開きます。
OracleDI Driver for XMLのインストール・ディレクトリに移動し、次に/demo/xmlサブディレクトリに移動します。
java -classpath ./samples/;../../drivers/snpsxmlo.jar;../../drivers/crimson.jar Employeeを実行します。
コンソールに次のような結果が表示されます。
* Registering Driver version
* Connecting to the employee.xml file
* Driver Version is 2.0b5
* Synchronizing the File with Schema
* Executing Query
Employee List
*************
Big.Boss has a salary of $3200
one.worker has a salary of $1000
two.worker has a salary of $1000
three.worker has a salary of $1000
four.worker has a salary of $1000
five.worker has a salary of $1350
* Increasing all wages by $100
* Synchronizing data back to file
* Closing Connection.You may now restart to see the changes.
サンプルを繰り返し実行すると、更新が適用され、実行のたびに給与が100ドルずつ増加することがわかります。
ソースの場所: /demo/xml/samples/XmlPlus.java
この簡単なJavaの例は、いくつかの組込みコマンドを使用した、XMLファイル用の非常に基本的な問合せツールです。
OSシェルを開きます。
OracleDI Driver for XMLのインストール・ディレクトリに移動し、次に/demo/xmlサブディレクトリに移動します。
java -classpath ./samples/;../../drivers/snpsxmlo.jar;../../drivers/crimson.jar XmlPlus <url>を実行します。
<url>は、XMLドライバの有効なURLです。URLを指定しないと、接続は実行されません。組込みコマンドCONNECTを使用して接続できます。
組込みコマンドは次のとおりです。
DESC: すべての表の詳細な説明を返します。
CONNECT <url>: XMLドライバに有効なJDBC URLに接続します。
DISCONNECT: 現在の接続を切断します。
EXIT、QUITまたはBYE: セッションを終了します。
すべての標準SQLコマンド(SELECT、INSERT、...)
java -classpath ./samples/;../../drivers/snpsxmlo.jar;../../drivers/crimson.jar XmlPlus "jdbc:snps:xml?f=employee.xml"
Starting XML Plus
Connecting to URL: jdbc:snps:xml?f=employee.xml
Connected.
Type 'help' for the list of commands
> SELECT * FROM person
ID;CONTR;SALARY;EMPLOYEEFK;PERSONPK;PERSONORDER
Big.Boss;null;3700;0;0;0
one.worker;null;1500;0;1;1
two.worker;null;1500;0;2;2
three.worker;null;1500;0;3;3
four.worker;null;1500;0;4;4
five.worker;null;1850;0;5;5
> UPDATE person SET salary = CAST(salary AS NUMERIC) + 20
Done
> SELECT * FROM PERSON
ID;CONTR;SALARY;EMPLOYEEFK;PERSONPK;PERSONORDER
Big.Boss;null;3720;0;0;0
one.worker;null;1520;0;1;1
two.worker;null;1520;0;2;2
three.worker;null;1520;0;3;3
four.worker;null;1520;0;4;4
five.worker;null;1870;0;5;5
> SYNCHRONIZE
Done
> BYE