• 検索結果がありません。

変更内容の検証

ドキュメント内 WebLogic JDBC プログラミング ガイド (ページ 141-144)

SelectStmt

手順 7. 変更内容の検証

レコードを 1 つだけ取り出す場合のサンプルを以下に示します。この方法は、1 レコードの変更内容を検証するには、効率的な方法です。このサンプルでは、

query-by-example(QBE)の句を使用して TableDataSet

から関心のあるレ

コードだけを取り出しています。

TableDataSet tds2 = new TableDataSet(conn, "empdemo");

tds2.where("empno = 8000") .fetchRecords();

最後の手順として、各手順の後、および各 save()

メソッドの後に作成した

「insert」、「update」、および「delete」の各文字列の後にクエリ結果を表示で きます。結果を表示する htmlKona の使用方法については、前のチュートリアル の「コードのまとめ」を参照してください。

DataSet

の操作を終了したら、次のように

close()

メソッドを使用して各 DataSet を閉じます。

tds.close();

tds2.close();

コードのまとめ

次に、この節で説明した概念を使用するサンプル コードを示します。

package tutorial.dbkona;

import weblogic.db.jdbc.*;

import java.sql.*;

import java.util.Properties;

public class rowid {

 public static void main(String[] argv)   throws Exception

 {

  Driver myDriver = (Driver)

  Class.forName("weblogic.jdbc.oci.Driver").newInstance();

  conn =

  myDriver.connect("jdbc:weblogic:oracle:DEMO",   "scott",

  "tiger");

  // ここで、レコードを 100 個挿入する

  TableDataSet ts1 = new TableDataSet(conn, "empdemo");

7 dbKona の使い方

  Record rec = ts1.addRecord();

  rec.setValue("empid", i)

  .setValue("name", "Person " + i)   .setValue("dept", i);

  }

// 新しいレコードを保存する。dbKona は選択的に保存を行う // つまり、TableDataSet 内の変更されたレコードだけを保存し、

// ネットワーク トラフィックとサーバ呼び出しを削減する

  System.out.println("Inserting " + ts1.size() + " records.");

  ts1.save();

  // 処理が完了したので DataSet を閉じる   ts1.close();

// 更新および削除用の KeyDef を定義する

// ROWID は Oracle 固有のフィールドで、更新および削除用の // 主キーとして機能することができる

  KeyDef key = new KeyDef().addAttrib("ROWID");

  // 最初に追加した 100 個のレコードを更新する   TableDataSet ts2 =

  new TableDataSet(conn, "empdemo", "ROWID, dept", key);

  ts2.where("empid <= 100");

  ts2.fetchRecords();

  for (int i = 1; i <= ts2.size(); i++) {   Record rec = ts2.getRecord(i);

  rec.setValue("dept", i + rec.getValue("dept").asInt());

  }

  // 更新されたレコードを保存する

  System.out.println("Update " + ts2.size() + " records.");

  ts2.save();

  // 同じ 100 個のレコードを削除する   ts2.reset();

  ts2.fetchRecords();

  for (int i = 0; i < ts2.size(); i++) {   Record rec = ts2.getRecord(i);

  rec.markToBeDeleted();

  }

  // レコードをサーバから削除する

  System.out.println("Delete " + ts2.size() + " records.");

  ts2.save();

// DataSet、ResultSet、および Statement は、

// 操作が終わったら必ず閉じる必要がある   ts2.close();

dbKona を使用した実装

  // 最後に、必ず接続を閉じる   conn.close();

 } }

dbKona での JDBC PreparedStatement の使い方

dbKona では構文的に正しい SQL 文が作成されるため、ベンダ固有の SQL の記

述方法について知識がそれほど必要ないという点で便利です。しかし、dbKona で JDBC の PreparedStatement

を使用できる場合もあります。

JDBC

PreparedStatement

は、複数回使用される SQL 構文をあらかじめコンパ

イルする場合に使用されます。PreparedStatement

のパラメータは、

PreparedStatement.clearParameters()

を呼び出すことで消去できます。

PreparedStatment

オブジェクトは、JDBC

Connection

クラス(これまでのサ

ンプルで conn という名前で使用されていたオブジェクト)の

preparedStatement()

メソッドを使用して作成されます。次のサンプルでは、

PreparedStatement

を作成してそれをループの中で実行しています。この文に

は、従業員 ID、名前、および部署という 3 つの入力(IN)パラメータがありま す。このサンプルでは、100 人の従業員をテーブルに追加します。

String inssql = "insert into empdemo(empid, " + "name, dept) values (?, ?, ?)";

PreparedStatement pstmt = conn.prepareStatement(inssql);

for (int i = 1; i <= 100; i++) { pstmt.setInt(1, i);

pstmt.setString(2, "Person" + i);

pstmt.setInt(3, i);

pstmt.executeUpdate();

}

pstmt.close();

作業が終了したら、Statement

オブジェクトまたは

PreparedStatement

オブ

ジェクトを必ず閉じます。

SQL を意識せずに同じタスクを dbKona で実行することもできます。この場合、

KeyDef

を使用して、更新または削除するフィールドを設定します。詳細につい

ては、チュートリアルの

7-35

ページの「KeyDef を使用した DBMS データの変 更」を参照してください。

7 dbKona の使い方

dbKona でのストアド プロシージャの使い方

固有のタスク(システムまたはベンダに依存しないタスクである場合が多い)を 実行できる、リモート マシンに格納されたプロシージャや関数にアクセスして、

dbKona の能力を向上させることができます。ストアド プロシージャおよび関数

を使用するには、

dbKona の Java アプリケーションとリモート マシンの間でリク

エストがどのように受け渡しされるかを理解する必要があります。ストアド プ ロシージャまたは関数を実行すると、入力されたパラメータの値が変更されま す。また、実行が成功したか失敗したかを示す値も返されます。

dbKona アプリケーションでの最初の手順は、DBMS に接続することです。ここ

で示すサンプルでは、最初のチュートリアルで作成した同じ Connection

オブ

ジェクト conn

を使用します。

ドキュメント内 WebLogic JDBC プログラミング ガイド (ページ 141-144)