質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

1回答

4020閲覧

データベースの登録更新削除をJTextの入力フォームから行いたい

sakurasunrise

総合スコア8

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2016/06/07 04:18

編集2016/06/08 01:48

###該当のソースコード

package employee_management_system;

import java.awt.Cursor;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;
import java.awt.Font;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ListSelectionModel;

public class employee_list extends JFrame {
private static final long serialVersionUID = 1L; // ソースコード保護
private final Action Sign_action = new Sign_up();
private final Action Edit_action = new Edit();
private final Action Deleate_action = new Deleate();
private JPanel contentPane;
private JTable table;
private JButton Sign_button;
private JButton Edit_button;
private JButton Deleate_button;

public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { employee_list frame = new employee_list(); frame.setTitle("社員一覧"); // タイトル frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } public employee_list() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // ×ボタンを押すとシステム終了 setBounds(100, 100, 600, 450); // ウィンドウ contentPane = new JPanel(); // JPanel配置 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); JScrollPane scrollPane = new JScrollPane(); // テーブル情報がウィンドウサイズを超えるとき、スクロールして表示する。 scrollPane.setBounds(10, 40, 560, 360); contentPane.add(scrollPane); table = new JTable(); // テーブルのカラム表示 table.setFont(new Font("MS Pゴシック", Font.PLAIN, 12)); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.setModel(new DefaultTableModel( new Object[][] { }, new String[] { "社員No", "名前", "生年月日", "年齢","性別", "メールアドレス" } )); this.setCursor(new Cursor(Cursor.WAIT_CURSOR)); // データベース接続 try { Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/employee_list","root","password"); Statement stm = conn.createStatement(); String sql = "select * from employee_list"; ResultSet rs = stm.executeQuery(sql); DefaultTableModel display = (DefaultTableModel)table.getModel(); // テーブル情報表示 display.setRowCount(0); while(rs.next()){display.addRow(new String[]{rs.getString(1), rs.getString(2),rs.getString(3),rs.getString(4),rs.getString(5),rs.getString(6)}); } rs.close(); // データベース切断 stm.close(); conn.close(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } this.setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); table.getColumnModel().getColumn(5).setPreferredWidth(250); scrollPane.setViewportView(table); table.setDefaultEditor(Object.class, null); Sign_button = new JButton("新規登録"); // 新規登録ボタン Sign_button.setBounds(20, 5, 120, 30); Sign_button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); Sign_button.setAction(Sign_action); Sign_button.setFont(new Font("MS Pゴシック", Font.PLAIN, 14)); contentPane.add(Sign_button); Edit_button = new JButton("編集"); // 編集ボタン Edit_button.setFont(new Font("MS Pゴシック", Font.PLAIN, 14)); Edit_button.setBounds(180, 5, 70, 30); Edit_button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {} }); Edit_button.setAction(Edit_action); contentPane.add(Edit_button); Deleate_button = new JButton("削除"); // 削除ボタン Deleate_button.setFont(new Font("MS Pゴシック", Font.PLAIN, 14)); Deleate_button.setBounds(290, 5, 70, 30); Deleate_button.setAction(Deleate_action); Deleate_button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); contentPane.add(Deleate_button); } private class Sign_up extends AbstractAction { // 新規登録ボタンを押した際の挙動 private static final long serialVersionUID = 1L; public Sign_up() { putValue(NAME, "新規登録"); putValue(SHORT_DESCRIPTION, "新しく社員の情報を登録"); // カーソルを合わせた際に説明文を表示 } public void actionPerformed(ActionEvent e) { employee_sign_up sign = new employee_sign_up(); sign.sign_up(); } } private class Edit extends AbstractAction { // 編集ボタンを押した際の挙動 private static final long serialVersionUID = 1L; public Edit() { putValue(NAME, "編集"); putValue(SHORT_DESCRIPTION, "選択している社員の情報を編集"); // カーソルを合わせた際に説明文を表示 } public void actionPerformed(ActionEvent e) { employee_edit ed = new employee_edit(); ed.edit(); } } private class Deleate extends AbstractAction { // 削除ボタンを押した際の挙動 private static final long serialVersionUID = 1L; public Deleate() { putValue(NAME, "削除"); putValue(SHORT_DESCRIPTION, "選択している社員の情報を削除"); // カーソルを合わせた際に説明文を表示 } public void actionPerformed(ActionEvent e) { employee_deleate del = new employee_deleate(); del.deleate(); } }

}
###試したこと
ネットで調べる。調査力がないのかもう2週間ほど調べる日が続いています。。。
###補足情報(言語/FW/ツール等のバージョンなど)
JAVA、Eclipse、JavaSwing

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

masaya_ohashi

2016/06/07 06:00

ソースコードは```で囲むと表示がキレイになります。 現状以下の2つをどこまで理解していますか? ・Swingのボタンの挙動をどう書けばいいか ・JDBCのConnection、Statement、ResultSetの使い方 また、現在書かれているコードについては全て自力で書いたものですか?最初からあるものですか?
masaya_ohashi

2016/06/07 06:04

もう一点、現状このコードに構文エラーがないとすると、以下のクラスも存在するはずです。これらはどんなコードで、あなたが書いたものですか? ・employee_sign_up ・employee_edit ・employee_deleate
sakurasunrise

2016/06/07 06:06

ボタン挙動についてはほぼわかっていないです。ネットで答えを見つけてそれをコピペしているだけかクラスの呼び出しをしているだけなので・・・。 JDBCについても上と同じでほぼコピペです。どの文がどの役割をしているかなどは理解しているつもりですが書けと言われたら書けないです。 現在書いているコードはSwing上でレイアウトを作り、それをベースに書いたものです。
sakurasunrise

2016/06/07 06:08

そちらはボタンを押した際のウィンドウを表示するクラスです。Swingでレイアウトを作りそれを元に作成しました。 そちらは機能などは全く備わっていない状態です。
guest

回答1

0

あまり全て答えすぎると研修の意味がないのでヒントとして幾つか情報を提供いたします。

Java

1//これはJDBCでMySQLを使うために、1回だけ呼び出す必要がある呪文のようなものです。 2Class.forName("com.mysql.jdbc.Driver");

Java

1// これがJDBCを使って実際にMySQLに接続している部分です 2Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/employee_list","root","password");

Java

1//接続したMySQLに対してSELECT文を実行している部分です 2Statement stm = conn.createStatement(); 3String sql = "select * from employee_list"; 4ResultSet rs = stm.executeQuery(sql);

JDBCはStatementと呼ばれるものを使ってSQL文を実行します。
Statement#executeQueryはSELECT文などの結果を取得する際に使い、
UPDATE文、INSERT文の際はStatement#executeUpdateの方を使います。
この辺で調べてみましょう。
http://www.javadrive.jp/servlet/database/

投稿2016/06/07 06:34

masaya_ohashi

総合スコア9206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

masaya_ohashi

2016/06/07 06:49

毎回呪文のように書いてました…ためになります!
sakurasunrise

2016/06/07 06:55

すみません。質問の仕方が悪かったのかもしれません。 Javaのコードで情報を直接書いてMySQLのテーブルに登録、編集はできるのですがJTextで入力した文字でテーブルに登録、編集することができないのです。 JTextで入力した値を取得してからテーブルにその情報を登録あるいは編集したいです。
masaya_ohashi

2016/06/07 07:23

でしたらそのJTextを使っている部分のコードを見せていただけますか?おそらくemployee_sign_up等の別クラスの方にあると思いますが… あと確認ですが、JTextと言っているのはJTextFieldの認識であっていますか?
masaya_ohashi

2016/06/07 08:18 編集

すみません、質問文のほうに貼ってください。追記する形でお願いします。
sakurasunrise

2016/06/07 08:43

すみません。1000文字を超えると書き込めないみたいです。 ボタンを押した際の挙動だけ貼り付けます。 private class Sign extends AbstractAction { // 登録ボタンを押した際の挙動 private static final long serialVersionUID = 1L; private JLabel label; public Sign() { putValue(NAME, "登録"); Number_textField = new JTextField(20); Name_textField = new JTextField(20); Birthday_textField = new JTextField(20); Age_textField = new JTextField(20); Mail_textField = new JTextField(20); label = new JLabel(); } public void actionPerformed(ActionEvent e){ label.setText(Number_textField.getText() + Name_textField.getText() + Birthday_textField.getText() + Age_textField.getText() + Mail_textField.getText()); System.out.print(Number_textField.getText()); System.out.print(Name_textField.getText()); System.out.print(Birthday_textField.getText()); System.out.print(Age_textField.getText()); System.out.print(Mail_textField.getText()); } } class Cancel extends AbstractAction { // キャンセルボタンを押した際の挙動 private static final long serialVersionUID = 1L; public Cancel() { putValue(NAME, "キャンセル"); } public void actionPerformed(ActionEvent e) { Component c = (Component)e.getSource(); Window w = SwingUtilities.getWindowAncestor(c); w.dispose(); } } }
masaya_ohashi

2016/06/07 08:54

もしかして、いまあなたが躓いている箇所は、「JTextField#getTextしても何故か空っぽになっている」、という現象ですか?
sakurasunrise

2016/06/08 00:16

いえ、データベースに登録する作業がわからないのです。
masaya_ohashi

2016/06/08 00:48

上のコメントで「Javaのコードで情報を直接書いてMySQLのテーブルに登録、編集はできる」と答えられていますが、どういう状況でしょう?また、2つ上のコードでは各フィールドからSystem.out.printでちゃんと中身を取得して表示することまでできています。この2つのことができるのであればデータベースに登録することはそれらを組み合わせるだけだと思いますが、ここまで理解しておられるうえで何がわからないのでしょう?SQL実行時にエラーが起きてしまう、とかですか?
sakurasunrise

2016/06/08 00:53 編集

その2つを組み合わせるというコードがわからないです。 いろいろ記述はしてみてはいるのですが構文エラーになってしまいます。
masaya_ohashi

2016/06/08 00:58

では構文エラーになるそのコードを提示するのが回答をもらう一番の近道です。その部分が書かれていないため、なにで躓いているのか、質問文のコードからは想像がつきませんでした。いま質問文に書かれているソースコードのうち、import文等の直接必要そうでない部分を省略し、INSERTをしてもダメだったコードを追記してみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問