【Swing】Oracleに接続して取得したデータをコンボボックスに設定する
おはようございます。
今回は、Oracleからデータを取得してコンボボックスに設定してみたいと思います。
プロジェクトは前回のものを流用します。
【Swing】eclipse に Swingプラグインをインストールして Hello Wolrd してみる
スポンサーリンク
新規クラスの追加
パッケージの作成
パッケージ・エクスプローラーから「src」を右クリックし、「新規」>「パッケージ」を選択します。
パッケージ名を入力し、「完了」ボタンをクリックします。
今回は「jp.co.doraxdora.common」としました。
クラスの作成
パッケージ・エクスプローラーから作成したパッケージを右クリックし、
「新規」>「クラス」を選択します。
クラス名を入力し、「完了」ボタンをクリックします。
今回は「DBAccess」としました。
DBAccess.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | /** * */ packagejp.co.doraxdora.common; importjava.sql.Connection; importjava.sql.PreparedStatement; importjava.sql.ResultSet; importjava.util.List; importoracle.jdbc.pool.OracleDataSource; /** * @author doraxdora * */ publicclassDBAccess{ privatestaticStringDB_URL="jdbc:oracle:thin:USER01/USER01@localhost:1521:XE"; privatestaticConnection con=null; /** * コンストラクタ. * * @throws Exception */ publicDBAccess()throwsException{ super(); // ドライバのロード OracleDataSource ds=newOracleDataSource(); ds.setURL(DB_URL); // DB接続 con=ds.getConnection(); } /** * SQLを実行して結果を取得します. * @param sql * @return */ publicResultSet executeQuery(Stringsql)throwsException{ PreparedStatement stmt=con.prepareStatement(sql); returnstmt.executeQuery(); } /** * パラメータを指定してSQLを実行し、結果を取得します. * * @param sql * @param param * @return * @throws Exception */ publicResultSet executeQuery(Stringsql,List<Object>param)throwsException{ PreparedStatement stmt=con.prepareStatement(sql); for(inti=0;i<param.size();i++){ if(param.get(i)instanceofString){ stmt.setString(i,(String)param.get(i)); }elseif(param.get(i)instanceofInteger){ stmt.setInt(i,(int)param.get(i)); } } returnstmt.executeQuery(); } } |
ライブラリの追加
Oracle からデータを取得するために、ライブラリを追加します。
パッケージ・エクスプローラーからプロジェクトを右クリックし、「プロパティ」を開きます。
「Javaのビルドパス」メニューを選択し、「ライブラリー」タブを表示、
「外部 JAR の追加」ボタンをクリックします。
ファイル選択ダイアログが表示されるので、
Oracle のインストールディレクトリから対象のファイルが格納されているフォルダを開きます。
デフォルト(Oracle 11g XE)の場合は次の場所に格納されています。
C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib
ライブラリフォルダーに格納されている「ojdbc6.jar」を開きます。
画面の修正
WPFの時と同様に、名前ラベル・テキスト、種別ラベル・コンボボックス、ボタンを配置します。
プログラムの修正
初期表示時に、
Oracle からデータを取得してコンボボックスに設定するように修正します。
MainForm.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | packagejp.co.doraxdora.form; importjava.awt.EventQueue; importjava.sql.ResultSet; importjava.util.ArrayList; importjava.util.List; importjavax.swing.DefaultComboBoxModel; importjavax.swing.JButton; importjavax.swing.JComboBox; importjavax.swing.JFrame; importjavax.swing.JLabel; importjavax.swing.JPanel; importjavax.swing.JTextField; importjavax.swing.border.EmptyBorder; importjp.co.doraxdora.common.DBAccess; publicclassMainFormextendsJFrame{ privateJPanel contentPane; privateJTextField textField; privateJComboBox<String>comboBox; /** * Launch the application. */ publicstaticvoidmain(String[]args){ EventQueue.invokeLater(newRunnable(){ publicvoidrun(){ try{ MainForm frame=newMainForm(); // コンポーネント初期化 frame.initializeComponent(); frame.setVisible(true); }catch(Exceptione){ e.printStackTrace(); } } }); } /** * Create the frame. */ publicMainForm(){ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100,100,462,304); contentPane=newJPanel(); contentPane.setBorder(newEmptyBorder(5,5,5,5)); setContentPane(contentPane); contentPane.setLayout(null); JLabel label=newJLabel("名前:"); label.setBounds(12,10,46,13); contentPane.add(label); textField=newJTextField(); textField.setBounds(47,7,96,19); contentPane.add(textField); textField.setColumns(10); JLabel label_1=newJLabel("種別:"); label_1.setBounds(159,10,56,13); contentPane.add(label_1); comboBox=newJComboBox(); comboBox.setBounds(195,7,119,19); contentPane.add(comboBox); JButton btnNewButton=newJButton("検索"); btnNewButton.setBounds(345,6,91,21); contentPane.add(btnNewButton); } /** * コンポーネントの初期化処理. * */ privatevoidinitializeComponent()throwsException{ DBAccess dba=newDBAccess(); ResultSet rs=dba.executeQuery("SELECT * FROM MSTKIND ORDER BY KIND_CD"); List<String>list=newArrayList<String>(); while(rs!=null&& rs.next()) { list.add((rs.getString("KIND_NAME"))); } DefaultComboBoxModel<String>model=newDefaultComboBoxModel<String>((String[])list.toArray(newString[0])); comboBox.setModel(model); } } |
起動してみる
無事にデータを設定することができました。
まとめ
ひとまずデータの取得まではできたので、
次回はデータテーブルを設置して、検索したデータを表示するところをやろうかと思います。
ではでは。
ディスカッション
コメント一覧
まだ、コメントがありません