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

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

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

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

Swing

SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

Q&A

解決済

1回答

2792閲覧

swing イベントの値をsqlの検索条件に設定

hekomin

総合スコア16

Java

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

Swing

SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

0グッド

0クリップ

投稿2016/09/12 00:37

編集2016/09/12 01:20

###前提・実現したいこと

いつもお世話になっております。
swingでチェックボックスやテキストボックスに値を設定して
その値をSQLの検索条件にしたいです。

例)チェックボックスの値 男 ture
SQLのバインド値に男が代入される

###発生している問題・エラーメッセージ
調べて試したところ、やはり基礎が理解できておらず、
手も足も出ない状況です。

できれば、
下記のソースをもとにSqLを実行するソースを書いていただきたい。

department = new JCheckBox("男性");
department.setBounds(306, 12, 98, 23);
panel.add(department);

###試したこと アクションリスナーやチェックボックスのオンオフでの設定がわからない。- リスト ###補足情報(言語/FW/ツール等のバージョンなど) 現在SQLを実行できていない状況です。 if(e.getSource() == searchbutton) { Boolean isselected = department.isSelected(); //booleanに代入しておく Boolean isselected1 = department2.isSelected(); 追記‐‐ 現状としましては、swingを使用し画面レイアウトを作成しました。 oracle XEにDBを作成し、そこから値を取得し、テーブルに表示したいと考えています。 そこで、SQLの検索条件として、チェックボックス・テキストボックスに入力した文字を設定したいと考えています。 お答え頂きたい内容としましては、 チェックボックス(性別;男)のオンオフ → Boolean:ture SQLの検索条件 where sex = "男"として検索できるような例文を教えていただきたいです。 わかりにくくて、大変申し訳ございませんが、ご協力お願いいたします。

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

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

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

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

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

shotakeu

2016/09/12 01:02

どのようなExceptionが吐かれるか、また実行すらできていないのか記述ください。
shotakeu

2016/09/12 01:09

すみません、それはプログラムの実行はできているのでしょうか? 実行時にExceptionが起きるのでしょうか? もっと具体的な情報が欲しいです。 プログラムだけ記述しても答えはもらえないかと思います。
guest

回答1

0

ベストアンサー

前回の質問の続きのようですので、こちらに記載します。

質問内容と趣旨があっているかわかりませんが、以下は一例です。データベースはH2Databaseですが。

以下のテーブルがあるとします。

CREATE TABLE SAMPLE_USER ( ID CHAR(10) not null primary key, NAME VARCHAR(255) not null, GENDER CHAR(1), PERIOD CHAR(1) ); INSERT INTO SAMPLE_USER (ID, NAME, GENDER, PERIOD) VALUES('A000000001', 'サンプル名前01', '1', '1'); INSERT INTO SAMPLE_USER (ID, NAME, GENDER, PERIOD) VALUES('A000000002', 'サンプル名前02', '2', '2'); INSERT INTO SAMPLE_USER (ID, NAME, GENDER, PERIOD) VALUES('A000000003', 'サンプル名前03', '1', '3'); INSERT INTO SAMPLE_USER (ID, NAME, GENDER, PERIOD) VALUES('A000000004', 'サンプル名前04', '2', '4');

プログラムの方は以下のようにSQLを作っているようになると思います。

lang

1 public static void main(String[] args) { 2 3 // フレーム表示 4 JFrame frame = new JFrame("test"); 5 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 6 frame.setSize(200, 200); 7 frame.getContentPane().setLayout(null); 8 frame.setLayout(new FlowLayout()); 9 10 // パネル 11 JPanel panel = new JPanel(); 12 frame.add(panel); 13 14 // チェックボックス 15 JCheckBox[] checkBoxs = new JCheckBox[2]; 16 checkBoxs[0] = new JCheckBox("男性"); 17 checkBoxs[0].setBounds(306, 12, 98, 23); 18 panel.add(checkBoxs[0]); 19 20 checkBoxs[1] = new JCheckBox("女性"); 21 checkBoxs[1].setBounds(306, 40, 98, 23); 22 panel.add(checkBoxs[1]); 23 24 // ボタン 25 JButton button = new JButton("SQL発行"); 26 panel.add(button); 27 28 // アクション 29 button.addActionListener(event -> { 30 31 StringBuilder sql = new StringBuilder("SELECT * FROM SAMPLE_USER"); 32 33 try (Connection connection = DriverManager.getConnection("jdbc:h2:~/test", "sa", "")) { 34 35 if (checkBoxs[0].isSelected() && checkBoxs[1].isSelected()) { 36 sql.append(" WHERE GENDER IN ('1', '2')"); 37 } else if (checkBoxs[0].isSelected()) { 38 sql.append(" WHERE GENDER = '1'"); 39 } else if (checkBoxs[1].isSelected()) { 40 sql.append(" WHERE GENDER = '2'"); 41 } 42 43 try (PreparedStatement ps = connection.prepareStatement(sql.toString())) { 44 45 try (ResultSet rs = ps.executeQuery()) { 46 System.out.println("-結果-"); 47 while (rs.next()) { 48 System.out.println(rs.getString(1)); 49 } 50 System.out.println("----"); 51 } 52 53 } catch (Exception e) { 54 e.printStackTrace(); 55 } 56 57 58 } catch (Exception e) { 59 e.printStackTrace(); 60 } 61 62 }); 63 64 // 表示 65 frame.setVisible(true); 66 67 }

投稿2016/09/12 01:47

java-beginner

総合スコア452

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

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

hekomin

2016/09/12 01:57

ご回答ありがとうございます。 try (Connection connection = DriverManager.getConnection("jdbc:h2:~/test", "sa", "")) { の部分が理解できないのですが、詳しく教えていただくことは可能でしょうか。 お手数おかけいたします。
hekomin

2016/09/12 02:16

ご回答ありがとうございます。 SQLの実行をResultSet で行っているのですが、型が違うため、SQL分を追加できません。
java-beginner

2016/09/12 02:28

「型が違う」というのは具体的なエラーが出てるのでしょうか?
hekomin

2016/09/12 02:34

sql = stat.executeQuery("SELECT * FROM SAMPLE_USER"); //チェックボックスのステータスがtureならばsql文に追加していく。 if(department.isSelected()){ sql.setadd("WHERE GENDER = '男性'"); }else if(department2.isSelected()){ sql.append("WHERE GENDER = '女性'"); 現在このようなコードになっているのですが、 appendの箇所で、メソッド append(String) は型 ResultSet で未定義ですというエラーが発生しています。 また、上記のコードで、SqL文の追加はできていますでしょうか
java-beginner

2016/09/12 02:40

変数「sql」の型はなんでしょうか? サンプルとして挙げた例では以下の手順です。 StringBuilderでsqlを組み立てる →PreparedStatementを取得 →ResultSetに結果を格納
hekomin

2016/09/12 02:45

スタートメント → Statement stat = null; コネクショ → Connection conn =null; リサルト → ResultSet sql = null; このようになっています。
java-beginner

2016/09/12 02:48

サンプルに合わせてやってみるとできると思います。
hekomin

2016/09/12 02:55

サンプルに合わせたらエラーが消滅しました。 もう一つお伺いしたいのですが このSQLの検索結果をテーブルに格納したいときはどのように行えばよろしいですか
java-beginner

2016/09/12 02:59

「テーブル」というのが私にはわからないので、何とも言えません。すみません。
hekomin

2016/09/12 03:05

swingのJTableクラスのことでございます。 説明力がなく、申し訳ございません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問