前提・実現したいこと
java.lang.NullPointerException
というエラーが表示され、テーブルに登録されているデータを表示することができずにいます。
発生している問題・エラーメッセージ
java.lang.NullPointerException
該当のソースコード
//表示 JButton btnOpen = new JButton("表示"); btnOpen.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO 自動生成されたメソッド・スタブ Connection con = null; PreparedStatement pstmt = null; ResultSet rs = null; try { //データベースに接続 con = DBconect.getConnection(); //表示データ存在チェック //表示データ存在チェック int errorCode = Validate.ckExistsData1(con); if(errorCode != Validate.getErrCode0()) { //エラーダイアログ表示 JOptionPane.showMessageDialog(frame, Validate.getErrMsg(errorCode)); return; } //表示SQL文作成 String mySql = "select BookNo, title, author, publisher, ISBN, releaseday, status " + "from book.tbl_book order by BookNo"; //ステートメントオブジェクトを作成 pstmt = con.prepareStatement(mySql); //検索するSQL実行 rs = pstmt.executeQuery(); //表のヘッダー部を作成 DefaultTableModel tableModel = new DefaultTableModel() { public String getColumnName(int column) { switch(column) { case 0: return "BookNo"; case 1: return "title"; case 2: return "author"; case 3: return "Publisher"; case 4: return "ISBN"; case 5: return "releaseday"; case 6: return "Status"; } return mySql ; } }; table.setModel(tableModel); rs.last(); tableModel.setRowCount(rs.getRow()); rs.beforeFirst(); System.out.println("表件数=" + tableModel.getRowCount() + "\t"); int i = 0; while(rs.next()) { tableModel.setValueAt(rs.getInt("BookNo"), i, 0); tableModel.setValueAt(rs.getString("title"), i, 1); tableModel.setValueAt(rs.getString("author"), i, 2); tableModel.setValueAt(rs.getString("publisher"), i, 3); tableModel.setValueAt(rs.getString("ISBN"), i, 4); tableModel.setValueAt(rs.getString("releaseday"), i, 5); tableModel.setValueAt(rs.getString("status"), i, 6); System.out.println("行数=" + i + "\t"); i++; } //表を描画 frame.getContentPane().add(scrollPane); table.setModel(tableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.setColumnSelectionAllowed(false); table.setRowSelectionAllowed(true); table.getColumnModel().getColumn(0).setMinWidth(150); table.getColumnModel().getColumn(1).setPreferredWidth(150); table.getColumnModel().getColumn(1).setMinWidth(1); scrollPane.setViewportView(table); scrollPane.repaint(); //コンボボックスの設定 String[] dataItem = {"-", "貸出中", "返却"}; JComboBox<Object> sutatsComboBox = new JComboBox<Object>(dataItem); TableColumn sutatsColumn = table.getColumnModel().getColumn(6); sutatsColumn.setCellEditor(new DefaultCellEditor(sutatsComboBox)); } catch(Exception ex) { System.out.println(ex.toString()); }finally { try { //実行結果をクローズ if(rs != null) { rs.close(); } if(pstmt != null) { pstmt.close(); } if(con != null) { con.close(); } } catch(SQLException se) { //何もしない } } } }); btnOpen.setBounds(370, 86, 105, 40); contentPane.add(btnOpen);
補足情報(FW/ツールのバージョンなど)
データを登録しているテーブルは以下になります。
CREATE TABLE book.tbl_book ( BookNo CHAR(3) NOT NULL, title VARCHAR(30) NOT NULL, author VARCHAR(20) NOT NULL, publisher VARCHAR(10) NOT NULL, ISBN CHAR(13) NOT NULL, releaseday CHAR(8) NOT NULL, status VARCHAR(10) NOT NULL, CONSTRAINT PRIMARY KEY (BookNo) );
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/22 21:40
2020/04/22 22:00
2020/04/22 22:14