【Swing】Oracleに接続して取得したデータをコンボボックスに設定する
おはようございます。
今回は、Oracleからデータを取得してコンボボックスに設定してみたいと思います。
プロジェクトは前回のものを流用します。
【Swing】eclipse に Swingプラグインをインストールして Hello Wolrd してみる
スポンサーリンク
新規クラスの追加
パッケージの作成
パッケージ・エクスプローラーから「src」を右クリックし、「新規」>「パッケージ」を選択します。
パッケージ名を入力し、「完了」ボタンをクリックします。
今回は「jp.co.doraxdora.common」としました。
クラスの作成
パッケージ・エクスプローラーから作成したパッケージを右クリックし、
「新規」>「クラス」を選択します。
クラス名を入力し、「完了」ボタンをクリックします。
今回は「DBAccess」としました。
DBAccess.java
/** * */ package jp.co.doraxdora.common; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.List; import oracle.jdbc.pool.OracleDataSource; /** * @author doraxdora * */ public class DBAccess { private static String DB_URL = "jdbc:oracle:thin:USER01/USER01@localhost:1521:XE"; private static Connection con = null; /** * コンストラクタ. * * @throws Exception */ public DBAccess() throws Exception{ super(); // ドライバのロード OracleDataSource ds = new OracleDataSource(); ds.setURL(DB_URL); // DB接続 con = ds.getConnection(); } /** * SQLを実行して結果を取得します. * @param sql * @return */ public ResultSet executeQuery(String sql) throws Exception { PreparedStatement stmt = con.prepareStatement(sql); return stmt.executeQuery(); } /** * パラメータを指定してSQLを実行し、結果を取得します. * * @param sql * @param param * @return * @throws Exception */ public ResultSet executeQuery(String sql, List<Object> param) throws Exception { PreparedStatement stmt = con.prepareStatement(sql); for (int i = 0; i < param.size(); i++) { if (param.get(i) instanceof String) { stmt.setString(i, (String) param.get(i)); } else if (param.get(i) instanceof Integer) { stmt.setInt(i, (int) param.get(i)); } } return stmt.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
package jp.co.doraxdora.form; import java.awt.EventQueue; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; import javax.swing.DefaultComboBoxModel; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.border.EmptyBorder; import jp.co.doraxdora.common.DBAccess; public class MainForm extends JFrame { private JPanel contentPane; private JTextField textField; private JComboBox<String> comboBox; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { MainForm frame = new MainForm(); // コンポーネント初期化 frame.initializeComponent(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public MainForm() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 462, 304); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); JLabel label = new JLabel("名前:"); label.setBounds(12, 10, 46, 13); contentPane.add(label); textField = new JTextField(); textField.setBounds(47, 7, 96, 19); contentPane.add(textField); textField.setColumns(10); JLabel label_1 = new JLabel("種別:"); label_1.setBounds(159, 10, 56, 13); contentPane.add(label_1); comboBox = new JComboBox(); comboBox.setBounds(195, 7, 119, 19); contentPane.add(comboBox); JButton btnNewButton = new JButton("検索"); btnNewButton.setBounds(345, 6, 91, 21); contentPane.add(btnNewButton); } /** * コンポーネントの初期化処理. * */ private void initializeComponent() throws Exception { DBAccess dba = new DBAccess(); ResultSet rs = dba.executeQuery("SELECT * FROM MSTKIND ORDER BY KIND_CD"); List<String> list = new ArrayList<String>(); while (rs != null && rs.next()) { list.add((rs.getString("KIND_NAME"))); } DefaultComboBoxModel<String> model = new DefaultComboBoxModel<String>((String[])list.toArray(new String[0])); comboBox.setModel(model); } }
起動してみる
無事にデータを設定することができました。
まとめ
ひとまずデータの取得まではできたので、
次回はデータテーブルを設置して、検索したデータを表示するところをやろうかと思います。
ではでは。
ディスカッション
コメント一覧
まだ、コメントがありません