###前提・実現したいこと
Eclipseからオラクルデータベースに接続して二つのテーブルを読み込み、その二つのテーブルのプライマリーキーとユーザーインプットの日付とスコアの4つの列で新しいテーブルにデータを挿入したいのですが、ユーザーインプットのStringバリューがDate型に変換されず下記のようなエラーが出てしまいます。
###発生している問題・エラーメッセージ
java.text.ParseException: Unparseable date: "" at java.text.DateFormat.parse(Unknown Source) at exercise1.DatabaseMainTest.insertTable(DatabaseMainTest.java:78)//Date PLAYING_DATE =(Date) format.parse(pAndg.getTxtDate().getText()); at exercise1.PlayerAndGame$3.actionPerformed(PlayerAndGame.java:204)//db.insertTable(); もしくは Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Illegal pattern character 'O' at java.text.SimpleDateFormat.compile(Unknown Source) at java.text.SimpleDateFormat.initialize(Unknown Source) at java.text.SimpleDateFormat.<init>(Unknown Source) at exercise1.DatabaseMainTest.insertTable(DatabaseMainTest.java:78) at exercise1.PlayerAndGame$3.actionPerformed(PlayerAndGame.java:204)
###該当のソースコード
Java
1 public void insertTable() throws SQLException, ParseException 2 { 3 String queryco = "Insert into playerandgame(GAME_ID,PLAYER_ID,PLAYING_DATE,SCORE) values (?,?,?,?)"; 4 pst = connection.prepareStatement(queryco); 5 PlayerAndGame pAndg=new PlayerAndGame(); 6 DateFormat format = new SimpleDateFormat("DD-MON-RR",Locale.ENGLISH); 7 8 try{ 9 int GAME_ID = Integer.parseInt(pAndg.getSelectedData()); 10 int PLAYER_ID = Integer.parseInt(pAndg.getSelectedData2()); 11 Date PLAYING_DATE =(Date) format.parse(pAndg.getTxtDate().getText()); 12 int SCORE = Integer.parseInt(pAndg.getTxtScore().getText()); 13 pst.setInt(1, GAME_ID); 14 pst.setInt(2, PLAYER_ID); 15 pst.setDate(3, PLAYING_DATE); 16 pst.setInt(4, SCORE); 17 18 pst.addBatch(); 19 20 pst.executeBatch(); 21 connection.commit(); 22 } 23 catch(Exception e){ 24 System.out.println(this); 25 } 26 27 }
###試したこと
データベースのプラットフォームはSql developerです。Preference->Database:NLSのDate formatはDD-MON-RRになっております。
Javaの列の型をStringにすると挿入できます。
日付入力は'DD-MON-RR'フォーマット以外にもいろいろな型を試してみました。
PlayAndGameクラスのコード
1class PlayerAndGame extends JFrame { 2 3 private JPanel mainPanel = new JPanel(); 4 private JPanel bottomLeft = new JPanel(); 5 private JPanel topPanel = new JPanel(); 6 private JPanel middlePanel = new JPanel(); 7 private JPanel bottomRight = new JPanel(); 8 private JLabel lLabel = new JLabel(); 9 private JLabel rLabel = new JLabel(); 10 private JLabel lblScore = new JLabel(); 11 private JLabel lblDate = new JLabel(); 12 private DefaultTableModel aModel = new DefaultTableModel(); 13 private DefaultTableModel bModel=new DefaultTableModel(); 14 private JTable lTable = new JTable(aModel); 15 private JTable rTable = new JTable(bModel); 16 private JTextField txtScore = new JTextField(15); 17 private JTextField txtDate = new JTextField(15); 18 private JScrollPane scroll1 = new JScrollPane(lTable); 19 private JScrollPane scroll2 = new JScrollPane(rTable); 20 DatabaseMainTest db = new DatabaseMainTest(); 21 private Vector rows = new Vector(); 22 private Vector columns = new Vector(); 23 private Vector p_rows = new Vector(); 24 private Vector p_columns = new Vector(); 25 String selectedData = null; 26 String selectedData2 = null; 27 28 private JButton btnInsert = new JButton(); 29 private JButton playerButton = new JButton(); 30 private JButton gameButton = new JButton(); 31 32 33 34 public JTable getlTable() { 35 return lTable; 36 } 37 38 public JTable getrTable() { 39 return rTable; 40 } 41 42 public JTextField getTxtScore() { 43 return txtScore; 44 } 45 46 public JTextField getTxtDate() { 47 return txtDate; 48 } 49 50 public String getSelectedData() { 51 return selectedData; 52 } 53 public String getSelectedData2() { 54 return selectedData; 55 } 56 57 public PlayerAndGame() throws SQLException { 58 this.setSize(700, 700); 59 this.setTitle("Game Information"); 60 61 mainPanel.setLayout(new GridLayout(3, 2, 5, 5)); 62 bottomLeft.setLayout(new GridLayout(3, 1, 2, 2)); 63 bottomRight.setLayout(new GridLayout(2, 1, 2, 2)); 64 topPanel.setLayout(new GridLayout(1, 2)); 65 middlePanel.setLayout(new GridLayout(1, 2)); 66 mainPanel.add(lLabel); 67 mainPanel.add(rLabel); 68 mainPanel.add(scroll1); 69 mainPanel.add(scroll2); 70 topPanel.add(lblScore); 71 topPanel.add(txtScore); 72 middlePanel.add(lblDate); 73 middlePanel.add(txtDate); 74 bottomLeft.add(topPanel); 75 bottomLeft.add(middlePanel); 76 bottomLeft.add(btnInsert); 77 bottomRight.add(playerButton); 78 mainPanel.add(bottomLeft); 79 bottomRight.add(gameButton); 80 mainPanel.add(bottomRight); 81 82 83 84 add(mainPanel); 85 86// System.out.print(txtScore.getText().toString()); 87// System.out.print(txtDate.getText().toString()); 88 89 ResultSet gameRS = db.getTableInfo("Game"); 90 ResultSetMetaData gameMD = gameRS.getMetaData(); 91 // create columns headers 92 for (int i = 1; i <= gameMD.getColumnCount(); i++) { 93 columns.addElement(gameMD.getColumnName(i)); 94 } 95 // 96 int row = 0; 97 while (gameRS.next())// loop for rows 98 { 99 Vector vRow = new Vector(); // to store the current row 100 for (int i = 1; i <= gameMD.getColumnCount(); i++)// loop for columns 101 { 102 103 Object columnValue = gameRS.getObject(i); 104 vRow.addElement(columnValue.toString()); 105 106 } 107 row += 1; 108 rows.addElement(vRow);// add individual row vectors to rows 109 110 } 111 112 aModel.setDataVector(rows, columns); 113 gameRS.close();//end of display the game table 114 115 /////////////////////////////////////////////////////////// 116 ResultSet playerRS = db.getTableInfo("Player"); 117 ResultSetMetaData playerMD = playerRS.getMetaData(); 118 // create columns headers 119 for (int i = 1; i <= playerMD.getColumnCount(); i++) { 120 p_columns.addElement(playerMD.getColumnName(i)); 121 } 122 // 123 int playerRow = 0; 124 while (playerRS.next())// loop for rows 125 { 126 Vector vRow = new Vector(); // to store the current row 127 for (int i = 1; i <= playerMD.getColumnCount(); i++)// loop for columns 128 { 129 130 Object columnValue = playerRS.getObject(i); 131 vRow.addElement(columnValue.toString()); 132 133 } 134 row += 1; 135 p_rows.addElement(vRow);// add individual row vectors to rows 136 137 } 138 139 bModel.setDataVector(p_rows, p_columns); 140 playerRS.close();//end of display the player table 141 142 143 144 /////////////////////////////////////////// 145 146 lTable.setCellSelectionEnabled(true); 147 ListSelectionModel cellSelectionModel = lTable.getSelectionModel(); 148 cellSelectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 149 150 cellSelectionModel.addListSelectionListener(new ListSelectionListener() { 151 public void valueChanged(ListSelectionEvent e) { 152 153 154 int[] selectedRow = lTable.getSelectedRows(); 155 int[] selectedColumns = lTable.getSelectedColumns(); 156 157 for (int i = 0; i < selectedRow.length; i++) { 158 for (int j = 0; j < selectedColumns.length; j++) { 159 selectedData = (String) lTable.getValueAt(selectedRow[i], selectedColumns[j]); 160 } 161 } 162 System.out.println("Selected: " + selectedData); 163 } 164 165 });// end of selection lister argument for lTable 166 167 rTable.setCellSelectionEnabled(true); 168 cellSelectionModel = rTable.getSelectionModel(); 169 cellSelectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 170 171 cellSelectionModel.addListSelectionListener(new ListSelectionListener() { 172 public void valueChanged(ListSelectionEvent e) { 173 174 int[] selectedRow = rTable.getSelectedRows(); 175 int[] selectedColumns = rTable.getSelectedColumns(); 176 177 for (int i = 0; i < selectedRow.length; i++) { 178 for (int j = 0; j < selectedColumns.length; j++) { 179 selectedData2 = (String) rTable.getValueAt(selectedRow[i], selectedColumns[j]); 180 } 181 } 182 System.out.println("Selected: " + selectedData2); 183 } 184 185 });// end of selection lister argument for rTable 186 btnInsert.addActionListener(new ActionListener() // anonymous inner class 187 { 188 @Override 189 public void actionPerformed(ActionEvent arg0) { 190// PreparedStatement pst=db.insertTable(); 191 lblScore.setText(txtScore.getText()); 192 lblDate.setText(txtDate.getText()); 193 try { 194 db.insertTable(); 195 } catch (SQLException e) { 196 // TODO Auto-generated catch block 197 e.printStackTrace(); 198 } catch (ParseException e) { 199 // TODO Auto-generated catch block 200 e.printStackTrace(); 201 } 202 } 203 204 } // end of insert button event handler 205 ); 206 }// end of constructor 207 208 public static void main(String[] args) throws SQLException { 209 210 211 212 DatabaseMainTest db = new DatabaseMainTest(); 213// System.out.println(db.getTableInfo()); 214 PlayerAndGame pAndGame = new PlayerAndGame(); 215 pAndGame.setFont(new Font("Arial", Font.BOLD, 24)); 216 // Validate frames that have preset sizes 217 // Pack frames that have useful preferred size info, e.g. from their 218 // layout 219 220 // Center the window 221 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 222 Dimension frameSize = pAndGame.getSize(); 223 if (frameSize.height > screenSize.height) { 224 frameSize.height = screenSize.height; 225 } 226 if (frameSize.width > screenSize.width) { 227 frameSize.width = screenSize.width; 228 } 229 pAndGame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); 230 pAndGame.setVisible(true); 231 232 } 233 234} // end of PlayerAndGame class
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/14 13:44
2016/12/14 13:47
2016/12/14 14:25
2016/12/14 14:33