スポンサードリンク

Java 都道府県マスターのレコードを削除する。

今回はレコードを削除するプログラムを作ってみましょう。削除のSQL文はシンプルで、コマンドプロンプトからの入力は抽出条件に使う PREF_CD だけで済みます。

削除は追加や修正にくらべると簡単ですが、抽出条件を間違えると予想外のデータが消えてしまうことがあるので、一番気をつけなければなりません。コンピュータのデータは削除するのは簡単ですが、追加するのは非常に手間がかかるものです。


【1】PrefDelete.java を新たに作成します。

*「\」はWindowsではエンマークのことです。

保存先 C:\java\sample100
ファイル名 PrefDelete.java

import java.sql.*;
import java.io.*;

class PrefDelete {
  public static void main(String args[]) {
    try {
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

      System.out.println("削除する PREF_CD を入力してください。");
      String str = br.readLine();
      int prefCd = Integer.parseInt(str);

      //JDBCドライバのロード
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
      //各設定
      String url = "jdbc:odbc:SampleDB030";
      String user = "";
      String pass = "";
      //データベースに接続
      Connection con = DriverManager.getConnection(url,user,pass);
      //ステートメントオブジェクトを作成
      Statement stmt = con.createStatement();

      //SQL文作成
      String mySql = "delete from T01Prefecture where PREF_CD = " + prefCd;
      System.out.println();
      System.out.println("SQL:" + mySql);

      //SQL実行
      int num = stmt.executeUpdate(mySql);
      System.out.println(num + "件のレコードを削除しました。");
      //オブジェクトを解放
      stmt.close();
      con.close();

    } catch (NumberFormatException e) {
      System.out.println("値を整数型に変換できませんでした。");
      System.out.println("例外発生:" + e );
    } catch (Exception e) {
      System.out.println("例外発生:" + e );
    }
  }
}



【2】コマンドプロンプトを起動して、カレントディレクトリを sample100 に切り替えます。

java-334.gif


【3】javac PrefDelete.java と入力し、コンパイルします。

java-392.gif


削除のプログラムを実行する前に、削除するレコードの PREF_CD を調べる必要があります。


【4】java PrefSelect と入力し、検索プログラムを実行します。

java-393.gif


【5】今回は 101 ボストン のレコードを削除しますので、この番号を覚えておいてください。

java-394.gif


【6】java PrefDelete と入力し、削除プログラムを実行します。

java-395.gif


【7】「削除する PREF_CD を入力してください。」と表示されたら 101 と入力してEnterキーを押します。

java-396.gif


【9】削除結果が表示されました。

java-397.gif

*コマンドライン引数を使い、SQL文がプログラムの中で動的に組み立てられています。


【10】コマンドプロンプトからレコードを確認してみます。java PrefSelect と入力し、検索プログラムを実行します。

java-398.gif


【11】「101 ボストン」が削除されています。

java-399.gif


【12】データベース SampleDB030.mdb のテーブル T01Prefecture を開いても確認することができます。

java-400.gif


【13】同様に削除プログラムを実行し、以下のレコードを削除してください。
・99 ハワイ
・100 グアム

java-401.gif


【14】最終的にテーブル T01Prefecture のデータは追加前の状態に戻ります。(沖縄県が一番最後)

java-402.gif



【解説】


(1)削除のSQL文を組み立てている部分です。変数が実際の値に置き換わります。
String mySql = "delete from T01Prefecture where PREF_CD = " + prefCd;

レコードを削除するときには where で抽出条件を指定することがとても重要です。抽出条件を忘れるとすべてのレコードが削除されてしまいますので気をつけてください。


(2)SQL文の組み立て方

最終的に組み立てたいSQL文です。
delete from T01Prefecture where PREF_CD = 101

全体を「"」(ダブルクォーテーション)で囲みます。
"delete from T01Prefecture where PREF_CD = 101"

値をコントロールや変数に置き換えます。
"delete from T01Prefecture where PREF_CD = prefCd"

コントロールや変数の前後に半角空白を入れ切り離します。
"delete from T01Prefecture where PREF_CD = prefCd "

コントロールや変数以外の文字列部分を「"」(ダブルクォーテーション)で囲みます。
"delete from T01Prefecture where PREF_CD = " prefCd

コントロールや変数と文字列を「+」で結合します。
"delete from T01Prefecture where PREF_CD = " + prefCd

変数mySqlに代入して1行のプログラムの終わりをあらわす「;」(セミコロン)を付けます。
String mySql = "delete from T01Prefecture where PREF_CD = " + prefCd;

これでプログラムの中でSQL文が動的に組み立てられるようになりました。

*SQLについてはAccess SQL初心者入門講座で詳しく解説しています。


今回までに作ったプログラムで、データベースを「検索(表示)」、「追加」、「更新」、「削除」できるようになりました。業務システムではこれが基本になります。

テーブル T01Prefecture のレコードをいろいろ操作してみてください。Javaからデータベースを操作する感じがつかめると思います。


スポンサードリンク






Java初心者入門講座TOPへ