Я принял различные типы входных данных (целочисленные, двойные, строковые и дату) в мою встроенную базу данных JDBC через ( JTextLabels EDIT: JTextFields), используя ResultSet, и я отображаю результаты в свинговом JTable, используя мой пользовательский AbstractTableModel. Ниже приведены фрагменты из моих кодов, где я думаю, что проблема может быть, но я не уверен;
public void connectToDB()
{
try
{
connection = DriverManager.getConnection(DBURL, DBUSERNAME, DBPASSWORD);
statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
connectedToDB = true;
}
catch (SQLException sqlEx)
{
sqlEx.printStackTrace();
}
}
//Overrides AbstractTableModel's getValueAt() method
public Object getValueAt(int row, int column) throws IllegalStateException
{
connectToDB();
if (connectedToDB == false)
throw new IllegalStateException ("Not Connected To database");
else
{
try
{
if ( resultSet.next() == true )
{
resultSet.absolute( row + 1 );
return resultSet.getObject( column + 1 );
}
}
catch (SQLException sqlEx)
{
sqlEx.printStackTrace();
}
}
return "";// returns an empty string Object in case an error occurs above
}
Похоже, что где-то вокруг метода getValueAt (), он генерирует следующее исключение, но даже трассировка стека не указывает мне на какую-либо часть моего кода;
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Cannot format given Object as a Number
at java.text.DecimalFormat.format(DecimalFormat.java:487)
at java.text.Format.format(Format.java:140)
at javax.swing.JTable$DoubleRenderer.setValue(JTable.java:5315)
at javax.swing.table.DefaultTableCellRenderer.getTableCellRendererComponent(DefaultTableCellRenderer.java:223)
at javax.swing.JTable.prepareRenderer(JTable.java:5683)
at javax.swing.JTable.getToolTipText(JTable.java:3328)
............
*Others ommitted 4 brevity*
............
Не знаю почему.