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

更新プログラムは、追加プログラムの PrefInsert3.java とほとんど同じです。違いは「更新のSQL文」と「画面に表示するメッセージ」くらいです。前回までのプログラムの流れが理解できていれば、今回は楽に作れると思います。

更新のSQL文では抽出条件が重要な役割を果たすので、その点に注目してください。


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

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

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

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

class PrefUpdate {
  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);

      System.out.println("新しい PREF_NAME を入力してください。");
      String prefName = br.readLine() ;

      //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 = "update T01Prefecture set PREF_NAME = '" + prefName + "' 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 PrefUpdate.java と入力し、コンパイルします。

java-382.gif


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


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

java-383.gif


【5】今回は 101 サイパン のレコードを更新しますので、この番号を覚えておいてください。

java-384.gif


【6】java PrefUpdate と入力し、更新プログラムを実行します。

java-385.gif


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

java-386.gif


【8】「新しい PREF_NAME を入力してください。」と表示されたら ボストン と入力してEnterキーを押します。

java-387.gif

*コマンドプロンプトでは日本語が入力できませんので、一度テキストエディタで入力し、コピーペーストしてください。


【9】更新結果が表示されました。

java-388.gif

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


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

java-389.gif


【11】「101 ボストン」に更新されています。

java-390.gif


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

java-391.gif


【解説】

プログラムは追加の時とほとんど一緒なので、今回は更新のSQL文についてだけ解説します。

(1)更新のSQL文を組み立てている部分です。変数が実際の値に置き換わります。
String mySql = "update T01Prefecture set PREF_NAME = '" + prefName + "' where PREF_CD = " + prefCd;

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


(2)SQL文の組み立て方

最終的に組み立てたいSQL文です。
update T01Prefecture set PREF_NAME = 'ボストン' where PREF_CD = 101

全体を「"」(ダブルクォーテーション)で囲みます。
"update T01Prefecture set PREF_NAME = 'ボストン' where PREF_CD = 101"

値をコントロールや変数に置き換えます。
"update T01Prefecture set PREF_NAME = 'prefName' where PREF_CD = prefCd"

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

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

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

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

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

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


スポンサードリンク

スポンサードリンク






Java初心者入門講座TOPへ