個別指導 Javaプログラミングスクール 武蔵浦和(中浦和)

現役SE(システムエンジニア)が埼京線の武蔵浦和(中浦和)周辺でJavaプログラミング学習の個別指導を行っています。

データベース接続2

[Webアプリケーション] データベース接続2

データベースの接続1で作成した下記のテーブルに、Javaのプログラムからデータを登録してみましょう。
・ユーザーテーブル
・スケジュールテーブル

下記サンプルプログラムを参考に、SQLを作成しデータが登録されるようにプログラミングをしてください。
・ユーザーテーブルには、最低2人分を登録してください。
・スケジュールテーブルには、最低2人分のスケジュールを登録してください。

public static void main(String[] args) {
    try {
        //JDBCドライバのロード
        Class.forName("com.mysql.cj.jdbc.Driver");
    }catch(ClassNotFoundException e) {
        e.printStackTrace();
    }

    //URL、ユーザー名、パスワードに値を設定
    String url   = "jdbc:mysql://localhost/テーブル名"
                     + "?characterEncoding=UTF-8&serverTimezone=JST&useSSL=false";
    String user = "ユーザー名";
    String pw   = "パスワード";

    //コネクション
    Connection con = null;
    //プリペアードステートメント
    PreparedStatement st = null;
    
    try {
        //データベースへの接続
        con = DriverManager.getConnection(url, user, pw);
        System.out.println("接続成功");

        //SQL文の生成
        StringBuilder buf = new StringBuilder();
        buf.append(" INSERT       ");
        buf.append(" INTO SAMPLE( ");
        buf.append(" COL1,        ");
        buf.append(" COL2,        ");
        buf.append(" COL3,        ");
        buf.append(" )VALUES(     ");
        buf.append(" ?,           ");
        buf.append(" ?,           ");
        buf.append(" ?,           ");
        buf.append(" );           ");

        //プリペアードステートメントの取得
        st = con.prepareStatement(buf.toString());

        //プレースホルダに値をセット
        st.setString(1, "a");
        st.setString(2, "b");
        st.setString(3, "c");

        //SQLの実行
        int cnt = st.executeUpdate();
        System.out.println(cnt + "件 登録");

    }catch(SQLException e) {
        e.printStackTrace();
    }finally{
        //リソースの開放
        if(con != null) {
            try {
                con.close();
            }catch(SQLException e){
                e.printStackTrace();
            }
        }
        if(st != null) {
            try {
                st.close();
            }catch(SQLException e){
                e.printStackTrace();
            }
        }
    }
}



さいたま市南区武蔵浦和駅中浦和駅)周辺でプログラミングを勉強したい・興味のある方に、 個別指導でJavaのプログラミングを教えています。生徒さまはIT・プログラミング未経験の社会人の方がほとんどです。
▼興味があれば、下記リンクをご確認ください。

java-musashiurawa.hatenablog.com

データベース接続1

[Webアプリケーション] データベースの接続

下記リンクの問題で作成した、スケジュールをファイルに出力するプログラムを、 スケジュールをデータベースに登録するプログラムに改良します。 java-musashiurawa.hatenablog.com

プログラミングを始める前にテーブルを2つ用意しましょう。
・ユーザーテーブル(ユーザー情報を格納するテーブル)
・スケジュールテーブル(スケジュール情報を格納するテーブル)

■ ユーザーテーブルの情報
カラムは下記の通りに作成してください。
・ユーザーID ... 主キー。4桁の数値で、オートインクリメントで0埋めの連番を登録。
・ユーザー名(姓) ... 必須項目。
・ユーザー名(名) ... 必須項目。
・性別 ... 必須項目。男性:M、女性:F の1文字を登録。
・誕生日 ... 必須項目。
・郵便番号 ... 必須項目。
・住所(都道府県) ... 必須項目。
・住所(市町村区) ... 必須項目。
・住所(番地) ... 必須項目。
・住所(ビル、マンション名) ... 任意項目。
・メールアドレス ... 一意制約。必須項目。
・パスワード ... 必須項目。
・備考 ... フリーの入力欄
・削除フラグ ... 0:有効、1:削除の数値を登録。
・作成日時 ... データを登録した日時を登録。
・更新日時 ... データを更新した日時を登録。

■ スケジュールテーブルの情報
カラムは下記の通りに作成してください。
・スケジュールID ... 主キー。オートインクリメントで連番を登録。
・ユーザーID ... 必須項目。ユーザーテーブルのユーザーIDを登録。
・スケジュール日付 ... 必須項目。8桁の文字を登録。
・予定 ... 必須項目。
・開始時刻 ... 必須項目。4桁の文字を登録。
・終了時刻 ... 必須項目。4桁の文字を登録。
・備考 ... フリーの入力欄
・作成日時 ... データを登録した日時を登録。
・更新日時 ... データを更新した日時を登録。

特に指定がなければ、文字の最大長など範囲は自由に設定してください。
作成日時、更新日時のデータ型に関しては、「2038年問題」で検索して適切なデータ型を採用しましょう。



さいたま市南区武蔵浦和駅中浦和駅)周辺でプログラミングを勉強したい・興味のある方に、 個別指導でJavaのプログラミングを教えています。生徒さまはIT・プログラミング未経験の社会人の方がほとんどです。
▼興味があれば、下記リンクをご確認ください。

java-musashiurawa.hatenablog.com

MySQL データベース環境構築3

[MySQL]データベースの環境構築

MySQL データベース環境構築2まで終わったら、 実際にデータベースに接続できることを確認します。

JDBCドライバにクラスパスを設定
eclipseの「ウィンドウ>設定」から「Java>インストール済みのJRE」をクリックします。 f:id:java_musashiurawa:20200427222353p:plain

➁ ➀の画面で編集ボタンをクリックし、外部JARの追加ボタンをクリックします。
f:id:java_musashiurawa:20200427222533p:plain

➂ 前回ダウンロードした「Connector J」のフォルダにある「mysql-connector-java-8.~~」のJARファイルを設定します。
f:id:java_musashiurawa:20200427222854p:plain

以上でクラスパスの設定は完了しているはずなので、下記のソースを実行してみましょう。

public static void main(String[] args) {
    try {
        //JDBCドライバーのロード
        Class.forName("com.mysql.cj.jdbc.Driver");

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

    try {
        //URL、ユーザー名、パスワードの設定
        String url   = "jdbc:mysql://localhost/データベース名?characterEncoding=UTF-8&serverTimezone=JST&useSSL=false";
        String user = "ユーザー名";
        String pw   = "パスワード";

        //データベースへの接続
        Connection con = DriverManager.getConnection(url, user, pw);
        System.out.println("接続成功");

        //リソースの開放
        con.close();

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

}

コンソールに「接続成功」と表示されたら、データベースへの接続ができています。
次回からはデータベースを利用したプログラムを作成してみましょう。



さいたま市南区武蔵浦和駅中浦和駅)周辺でプログラミングを勉強したい・興味のある方に、 個別指導でJavaのプログラミングを教えています。生徒さまはIT・プログラミング未経験の社会人の方がほとんどです。
▼興味があれば、下記リンクをご確認ください。

java-musashiurawa.hatenablog.com

MySQL データベース環境構築2

[MySQL]データベースの環境構築

■ログイン/ログアウト
MySQLの実行環境が整ったら、実際にログインしてみましょう。
コマンドプロンプトを開いて、下記コマンドでログインします。
”ユーザー名”には、まずは「root」を指定して試してみてください。

mysql -u ユーザー名 -p

入力後にパスワードを聞かれるので、インストール時に設定したパスワードを入力するとログインできます。
「Welcome to the MySQL ~~~」と文字が表示されたらログイン成功です。 f:id:java_musashiurawa:20200423085127p:plain

ログアウトする場合は、下記コマンドを実行してください。

quit



■ユーザーの作成
下記コマンドでユーザーが作成できます。ユーザーを作成してログインできるか確認してみましょう。

create user ユーザー名 @localhost IDENTIFIED BY 'パスワード';



■データベースの作成
作成したユーザーでログインしている場合は、一度ログアウトしてrootでログインしなおしてください。
rootでログインした状態で下記コマンドを実行し、データベースを作成してみましょう。

create database データベース名 default character set utf8;



■ユーザー権限の付与
先ほど作成したユーザーに権限を付与します。 下記コマンドを実行してください。
MySQLのversionが 5.~~の場合

GRANT ALL PRIVILEGES ON データベース名.* TO ユーザー名@localhost IDENTIFIED BY 'パスワード';

MySQLのversionが 8.~~の場合

GRANT ALL PRIVILEGES ON データベース名.* TO ユーザー名@localhost;


以上で学習に使うデータベースの準備は完了です。
必須ではないですが、SQLを扱う上で非常に便利なので
下記リンクからA5というツールをダウンロードしておきましょう。
A5:SQL Mk-2の詳細情報 : Vector ソフトを探す!



さいたま市南区武蔵浦和駅中浦和駅)周辺でプログラミングを勉強したい・興味のある方に、 個別指導でJavaのプログラミングを教えています。生徒さまはIT・プログラミング未経験の社会人の方がほとんどです。
▼興味があれば、下記リンクをご確認ください。

java-musashiurawa.hatenablog.com

MySQL データベース環境構築1

[MySQL]データベースの環境構築

MySQLのダウンロード
下記リンクからMySQLインストーラーをダウンロードする。
MySQL公式サイト:MySQL :: Download MySQL Installer (Archived Versions)
※バージョンは、新しいversion8.~か、参考文献が多いversion5.~のどちらでもOKです。

MySQLのインストール
参考記事:MySQLのダウンロード&インストールと初期設定方法 | サービス | プロエンジニア
記事ではセットアップ方法で「Developer Default」を選択していますが、
「Custom」を選択して下記2つの製品だけでもOKです。
MySQL Server
・Connenctor/J

環境変数の設定
MySQLのインストールが完了したら、MySQLのフォルダができていることをエクスプローラーで確認しましょう。
確認できたら、mysql.exeがあるbinフォルダのパスを環境変数に設定しましょう。

➀binフォルダのパスをコピーする f:id:java_musashiurawa:20200422230735p:plain

➁変数PATHに新規で➀のパスを追加 f:id:java_musashiurawa:20200422231338p:plain

■設定の確認
コマンドプロンプト環境変数の設定が正しくされているか確認する。
mysql --version」と入力し、画像の様にversionが表示されたら設定が問題なくされている。
f:id:java_musashiurawa:20200422232112p:plain



さいたま市南区武蔵浦和駅中浦和駅)周辺でプログラミングを勉強したい・興味のある方に、 個別指導でJavaのプログラミングを教えています。生徒さまはIT・プログラミング未経験の社会人の方がほとんどです。
▼興味があれば、下記リンクをご確認ください。

java-musashiurawa.hatenablog.com

ファイル操作2

[Java]ファイル操作の練習問題

ファイル操作1で入力したスケジュールを読み込むプログラムを作成しましょう。
出力結果を元にプログラミングを完成させてください。

問題2

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    String fileName = "schedule.csv";

    //ディレクトリ名を取得
    System.out.print("名前を入力してください:");
    String userName = scan.nextLine();

    //ファイルを読み込む
    

}

実行結果

名前を入力してください:田中太郎

ようこそ田中太郎さん。
登録してあるスケジュールを表示します。

日付:2020/07/19
予定:花火大会
開始時間:17:00
終了時間:21:00
備考:飲み物買い出し担当

日付:2020/07/28
予定:BBQ
開始時間:11:00
終了時間:18:00
備考:

スケジュールの表示を終了します。


■プログラミング内容
・Stringクラスから適当な機能を利用して、文字列処理を簡潔にしましょう。
・ファイルが存在しない場合の処理もいれましょう。

名前を入力してください:山田一郎

ようこそ山田一郎さん。
登録してあるスケジュールを表示します。

山田一郎さんのファイルが存在しません。
スケジュールを登録してから実行してください。

スケジュールの表示を終了します。

余裕があれば不要な予定を削除する機能も追加してみてください。



さいたま市南区武蔵浦和駅中浦和駅)周辺でプログラミングを勉強したい・興味のある方に、 個別指導でJavaのプログラミングを教えています。生徒さまはIT・プログラミング未経験の社会人の方がほとんどです。
▼興味があれば、下記リンクをご確認ください。

java-musashiurawa.hatenablog.com

ファイル操作1

[Java]ファイル操作の練習問題

入力したスケジュールをCSVファイルに書き出すプログラムを作成しましょう。
Cドライブ配下に「JavaTest」フォルダを作成してください。
出力結果を元にプログラミングを完成させてください。

問題1

public static void main(String[] args) {
    Scanner scan =  new Scanner(System.in);
    String fileName = "schedule.csv";

    //ディレクトリ名を取得
    System.out.print("名前を入力してください:");
    String userName = scan.nextLine();

    //ディレクトリを作成する
    String path = "c:\\JavaTest\\" + userName;


    //新規の場合、ファイルを作成


    //スケジュールを入力

}

実行結果

名前を入力してください:田中太郎

ようこそ田中太郎さん。
スケジュールを入力してください。
日付:2020/07/19
予定:花火大会
開始時間:17:00
終了時間:21:00
備考:飲み物買い出し担当
予定を入れました。
引き続き予定を入れる場合は「はい」と入力してください。
予定を入れる:はい

スケジュールを入力してください。
日付:2020/07/28
予定:BBQ
開始時間:11:00
終了時間:18:00
備考:
予定を入れました。
引き続き予定を入れる場合は「はい」と入力してください。
予定を入れる:いいえ
スケジュールを入力を終了します。


■プログラム内容
・ユーザー名を入力してもらい、ユーザー名でディレクトリを作成する。

フォルダ作成
CSVファイルはユーザ名のフォルダ内に作成する。
・出力項目は「日付、予定、開始時間、終了時間、備考」の5項目。
・ファイルの1行目には、出力項目を見出しとして出力する。
csvファイル見出し
・プログラムを起動する度に、同じユーザー名を入力すると、同じファイルに予定を追加で書き込めるようにする。



さいたま市南区武蔵浦和駅中浦和駅)周辺でプログラミングを勉強したい・興味のある方に、 個別指導でJavaのプログラミングを教えています。生徒さまはIT・プログラミング未経験の社会人の方がほとんどです。
▼興味があれば、下記リンクをご確認ください。

java-musashiurawa.hatenablog.com