現在javaの勉強として人員管理のwebアプリを作っています。
Mysqlのレコードを→Dao→jspで一覧表示、逆にjspのフォームへ情報を入力し、レコード登録や削除を行うといった物です。
一覧を表示する部分はできたのですがレコードの登録、Insert文の使用方法がいまいち理解できないです。
フォームに入力した情報は、デバックで確認してみるとDao内のInsertメソッド内の各カラム名の変数に格納されているので、それがsql文に連携できていないのかそれともsql文の使い方が間違っているのかだと思うのですが判断がつきません。
わかる方がいれば添削していただければと思います。
public ResultSet InsertInformation(String name, String name_hiragana, String birthday, String mail_address, String enter_date,String retire_date, String status) throws ClassNotFoundException, SQLException { //SQL文 //メッセージ情報を挿入 String sql = "INSERT INTO employee_info values(?, ?, ?, ?)"; String sql2 = "INSERT INTO employee_state values(?, ?, ?)"; /* * DB接続/挿入/終了 * メッセージ挿入 */ try { Class.forName("com.mysql.jdbc.Driver"); //ドライバクラスのロード conn = DriverManager.getConnection(url, user, password); //Connectionクラス生成 pstmt = conn.prepareStatement(sql); //PreparedStatementクラス生成 pstmt.setString(1, "name"); pstmt.setString(2, "name_hiragana"); pstmt.setString(3, "birthday"); pstmt.setString(4, "mail_address"); pstmt = conn.prepareStatement(sql2); pstmt.setString(1, "enter_date"); pstmt.setString(2, "retire_date"); pstmt.setString(3, "status"); pstmt.executeUpdate(); //INSERT文を実行 rs = pstmt.executeQuery(); while (rs.next()); return rs; } catch (ClassNotFoundException e) { throw e; } catch (SQLException e) { throw e; } catch (Exception e) { throw e; } finally { // クローズ処理 if (conn != null) { conn.close(); conn = null; } if (pstmt != null) { pstmt.close(); pstmt = null; } if (rs != null) { rs.close(); rs = null; } } }
以上が登録のメソッドになります。(コードタグはこれでいいのでしょうか)
自分でも怪しいと思うのが複数へのテーブルへ対してのsql文の使い方で、このように変数を二つ作るだけで良いのかという点です。
もっといいいやり方などあればご享受願います。
どうぞ宜しくお願い致します。
追記です。
皆様ご教授いただきありがとうございます。
sql文は1テーブルの変数を取得した時点でinsert文を実行していくんですね。
今回は2回とも
pstmt.executeUpdate();
で実行すれば良いのでしょうか。
間が空いてしまい申し訳ありませんでした。
なんとか一つ目のテーブルへのinsert文は成功するようになりました、ありがとうございます。
ただ二つ目のinsert文がどうしてもうまくいきません。
1度目の
pstmt.executeUpdate();
の後に
pstmt = conn.prepareStatement(sql2);
pstmt.setString(1, 変数名);
省略
pstmt.executeUpdate(); //INSERT文を実行
conn.close();
という風にしてみたのですがどのように変えるべきでしょうか。
(というかsql文は一つにまとめられないものなんでしょうか)
何度もお手数おかけして恐縮ですが宜しくお願い致します。