JDBC課題

JDBC課題


準備

  • データ挿入用SQL

pgAdmin4を起動して、下記SQLを実行してください。

-- 【SQLの実行】で使用したテーブルのレコードを削除
DELETE FROM tb_shohin;

INSERT INTO tb_shohin (shohin_id, shohin_name, tanka) 
VALUES  ('001', 'いちご', 500), 
        ('002', 'ぶどう', 900),
        ('003', 'バナナ', 700),
        ('004', 'アボカド', 400),
        ('005', 'サクランボ', 1200),
        ('006', '梨', 1100),
        ('007', 'レモン', 500),
        ('008', 'すだち', 700),
        ('009', 'マスカット', 2000),
        ('010', 'オレンジ', 1100),
        ('011', '柿', 800),
        ('012', 'りんご', 1400),
        ('013', 'スイカ', 1800),
        ('014', 'メロン', 1900),
        ('015', 'アセロラ', 1300),
        ('016', 'イチジク', 100),
        ('017', 'キウイフルーツ', 300),
        ('018', 'グレープフルーツ', 200),
        ('019', 'ドリアン', 3300),
        ('020', 'パイナップル', 800),
        ('021', 'マンゴー', 1900),
        ('022', 'ライチ', 600);

課題内容
4-4という名前のプロジェクトを作成し、下記4つのJavaファイルをコピーして、それぞれのソースを修正し、実行できるようにしてください。

DBAccess.java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * ■ データベースに接続するプログラム
 *
 * カリキュラム「JDBCドライバ」を参考に
 * JDBCドライブのjarファイルの設置とビルドパスの追加も忘れないようにしましょう。
 *
 * 問①〜問④までを回答し、データベースと接続してみましょう。
 * カリキュラム「データベースを扱うための準備」を参考にしてください。
 *
 * 実行結果の提出に関しては、
 * いつも通りソースのコミットしていただきますが、
 * 今回は実行結果のスクリーンショットも合わせて提出していただきます。
 * 画像名はDBAccess.pngとして、4-4フォルダの中に入れ、これまでと同様に提出してください。
 *
 */

public class DBAccess {

    /** ドライバーのクラス名 */
    private static final String POSTGRES_DRIVER = "org.postgresql.Driver";
    /** ・JDMC接続先情報 */
    // 問① データベースのホスト名・データベース名を定数にしなさい。
    private static final String JDBC_CONNECTION =
    /** ・ユーザー名 */
    // 問② データベースのユーザー名を定数にしなさい。
    private static final String USER =
    /** ・パスワード */
    // 問③ データベースのパスワードを定数にしなさい。
    private static final String PASS =

    public static void main(String[] args) {

        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;

        try {
            Class.forName(POSTGRES_DRIVER);
            // 問④ 問①〜③の定数を使ってデータベースと接続しなさい。
            connection = DriverManager.getConnection(
                    "jdbc:postgresql://【ホスト名】/【データベース名】", "【ユーザ名】", "【パスワード】");
            statement = connection.createStatement();

            String SQL = "SELECT * FROM TB_SHOHIN";
            resultSet = statement.executeQuery(SQL);

            while (resultSet.next()) {
                String column1 = resultSet.getString("SHOHIN_ID");
                String column2 = resultSet.getString("SHOHIN_NAME");
                int column3 = resultSet.getInt("TANKA");

                System.out.print(column1 + ",");
                System.out.print(column2 + ",");
                System.out.println(column3);
            }

            // forName()で例外発生
        } catch (ClassNotFoundException e) {
            e.printStackTrace();

            // getConnection()、createStatement()、executeQuery()で例外発生
        } catch (SQLException e) {
            e.printStackTrace();

        } finally {
            try {
                if (resultSet != null) {
                    resultSet.close();
                }
                if (statement != null) {
                    statement.close();
                }
                if (connection != null) {
                    connection.close();
                }

            } catch (SQLException e) {
                e.printStackTrace();

            }
        }
    }
}

DBSelect.java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * ■ データベースに接続するプログラム
 * データベースに接続し、任意のカラムを表示させる処理。
 *
 * 問①〜問⑥までの回答をお願いします。
 *
 * 実行結果の提出に関しては、
 * いつも通りソースのコミットしていただきますが、
 * 今回は実行結果のスクリーンショットも合わせて提出していただきます。
 * 画像名はDBSelect.pngとして、4-4フォルダの中に入れ、これまでと同様に提出してください。
 *
 */

public class DBSelect {

    /** ドライバーのクラス名 */
    private static final String POSTGRES_DRIVER = "org.postgresql.Driver";
    /** ・JDMC接続先情報 */
    // 問① データベースのホスト名・データベース名を定数にしなさい。
    private static final String JDBC_CONNECTION =
    /** ・ユーザー名 */
    // 問② データベースのユーザー名を定数にしなさい。
    private static final String USER =
    /** ・パスワード */
    // 問③ データベースのパスワードを定数にしなさい。
    private static final String PASS =

    public static void main(String[] args) {

        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;

        try {
            Class.forName(POSTGRES_DRIVER);
            // 問④ 問①〜③の定数を使ってデータベースと接続しなさい。
            connection = DriverManager.getConnection(
                    "jdbc:postgresql://【ホスト名】/【データベース名】", "【ユーザ名】", "【パスワード】");
            statement = connection.createStatement();
            // 問⑤ SHOHIN_IDが001と020のものを表示させるためのSQL文を記述しましょう。
            String SQL = "ここにSQLを記述してください。";
            resultSet = statement.executeQuery(SQL);

            while (resultSet.next()) {
                // 問⑥ それぞれカラム名を入力してください。
                String column1 = resultSet.getString("商品IDのカラム名");
                String column2 = resultSet.getString("商品名のカラム名");
                int column3 = resultSet.getInt("単価のカラム名");

                System.out.print(column1 + ",");
                System.out.print(column2 + ",");
                System.out.println(column3);
            }

            // forName()で例外発生
        } catch (ClassNotFoundException e) {
            e.printStackTrace();

            // getConnection()、createStatement()、executeQuery()で例外発生
        } catch (SQLException e) {
            e.printStackTrace();

        } finally {
            try {
                if (resultSet != null) {
                    resultSet.close();
                }
                if (statement != null) {
                    statement.close();
                }
                if (connection != null) {
                    connection.close();
                }

            } catch (SQLException e) {
                e.printStackTrace();

            }
        }
    }
}

DBUpdate.java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * ■ データベースに接続するプログラム
 * データベースに接続し、テーブルの内容を変更する処理。
 *
 * 問①〜問⑥までを回答し、データベースと接続してみましょう。
 * カリキュラム「データベースを扱うための準備」を参考にしてください。
 *
 * 実行結果の提出に関しては、
 * いつも通りソースのコミットしていただきますが、
 * 今回は実行結果のスクリーンショットも合わせて提出していただきます。
 * 画像名はDBUpdate.pngとして、4-4フォルダの中に入れ、これまでと同様に提出してください。
 *
 */

public class DBUpdate {

    /** ドライバーのクラス名 */
    private static final String POSTGRES_DRIVER = "org.postgresql.Driver";
    /** ・JDMC接続先情報 */
    // 問① データベースのホスト名・データベース名を定数にしなさい。
    private static final String JDBC_CONNECTION =
    /** ・ユーザー名 */
    // 問② データベースのユーザー名を定数にしなさい
    private static final String USER =
    /** ・パスワード */
    // 問③ データベースのパスワードを定数にしなさい。
    private static final String PASS =

    public static void main(String[] args) {

        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;

        try {
            Class.forName(POSTGRES_DRIVER);
            // 問④ 問①〜③の定数を使ってデータベースと接続しなさい。
            connection = DriverManager.getConnection(
                    "jdbc:postgresql://【ホスト名】/【データベース名】", "【ユーザ名】", "【パスワード】");
            statement = connection.createStatement();

            // 問⑤ SHOHIN_IDが020のSHOHIN_NAMEを「商品20」に変更するためのSQL文を記述しましょう。
            String SQL = "ここにSQLを記述してください。";

            // 問⑥ 上記のSQL文を実行するための文を記述しましょう。

            //一覧表示
            String SQLselect = "SELECT * FROM TB_SHOHIN";
            resultSet = statement.executeQuery(SQLselect);

            while (resultSet.next()) {
                String column1 = resultSet.getString("SHOHIN_ID");
                String column2 = resultSet.getString("SHOHIN_NAME");
                int column3 = resultSet.getInt("TANKA");

                System.out.print(column1 + ",");
                System.out.print(column2 + ",");
                System.out.println(column3);
            }

            // forName()で例外発生
        } catch (ClassNotFoundException e) {
            e.printStackTrace();

            // getConnection()、createStatement()、executeQuery()で例外発生
        } catch (SQLException e) {
            e.printStackTrace();

        } finally {
            try {
                if (statement != null) {
                    statement.close();
                }
                if (connection != null) {
                    connection.close();
                }

            } catch (SQLException e) {
                e.printStackTrace();

            }
        }
    }
}

DBPrepared.java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * ■ データベースに接続するプログラム
 * データベースへ接続し、指定(任意)の値を取得し、表示させる処理。
 * 問①〜⑤の回答をお願いします。
 *
 * 実行結果の提出に関しては、
 * いつも通りソースのコミットしていただきますが、
 * 今回は実行結果のスクリーンショットも合わせて提出していただきます。
 * 画像名はDBPrepared.pngとして、4-4フォルダの中に入れ、これまでと同様に提出してください。
 *
 */

public class DBPrepared {

    /** ドライバーのクラス名 */
    private static final String POSTGRES_DRIVER = "org.postgresql.Driver";
    /** ・JDMC接続先情報 */
    // 問① データベースのホスト名・データベース名を定数にしなさい。
    private static final String JDBC_CONNECTION =
    /** ・ユーザー名 */
    // 問② データベースのユーザー名を定数にしなさい
    private static final String USER =
    /** ・パスワード */
    // 問③ データベースのパスワードを定数にしなさい。
    private static final String PASS =

    public static void main(String[] args) {

        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;

        try {
            Class.forName(POSTGRES_DRIVER);
            // 問④ 問①〜③の定数を使ってデータベースと接続しなさい。
            connection = DriverManager.getConnection(
                    "jdbc:postgresql://【ホスト名】/【データベース名】", "【ユーザ名】", "【パスワード】");
            statement = connection.createStatement();

            String SQL = "SELECT * FROM TB_SHOHIN WHERE SHOHIN_ID = ? OR SHOHIN_ID = ? ";
            PreparedStatement preparedStatement = connection.prepareStatement(SQL);

            /*
             * 問⑤ SHOHIN_IDが001と020のものを表示できるように
             *     PreparedStatementインターフェースを使って値をSQL文にセットしてみましょう。
             */
            preparedStatement.setString("商品IDをセット");
            preparedStatement.setString("商品IDをセット");

            resultSet = preparedStatement.executeQuery();

            while (resultSet.next()) {
                String column1 = resultSet.getString("SHOHIN_ID");
                String column2 = resultSet.getString("SHOHIN_NAME");
                int column3 = resultSet.getInt("TANKA");

                System.out.print(column1 + ",");
                System.out.print(column2 + ",");
                System.out.println(column3);
            }

            // forName()で例外発生
        } catch (ClassNotFoundException e) {
            e.printStackTrace();

            // getConnection()、createStatement()、executeQuery()で例外発生
        } catch (SQLException e) {
            e.printStackTrace();

        } finally {
            try {
                if (resultSet != null) {
                    resultSet.close();
                }
                if (statement != null) {
                    statement.close();
                }
                if (connection != null) {
                    connection.close();
                }

            } catch (SQLException e) {
                e.printStackTrace();

            }
        }
    }
}

修正対象ファイル
下記の順番で修正してください

  • 1.DBAccess.java
  • 2.DBSelect.java
  • 3.DBUpdate.java
  • 4.DBPrepared.java

また、実行した時のエビデンス(スクリーンショット)も一緒に提出をお願いします。

カテゴリー

アーカイブ

Close Bitnami banner
Bitnami