JTable读取空值

时间:2017-04-26 11:55:19

标签: java swing jtable h2 numberformatexception

我有一个H2数据库,我想从JTable读取记录以填充数据库表。但是我的表可以有空记录。

我使用这种方法:

     String descr = jTable2.getValueAt(i, 1).toString();

每次JTable(i,1)中的字段为空时,我都会收到此错误:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException.

如何在没有此错误的情况下从表中读取和存储空值的任何建议?

编辑: 有关更明确的示例,无论何时我在空字段中执行jTable2.getValueAt(i,1),都会发生相同的空异常。

     for (int i = 0; i <10; i++) {

            int processos = Integer.parseInt(jTable2.getValueAt(i, 0).toString());

            String descr = jTable2.getValueAt(i, 1).toString();
            if(!descr.isEmpty())
                 descr = jTable2.getValueAt(i, 1).toString(); 
            else{ 
                 descr= "";
                        }
            //String data = jTable2.getValueAt(i, 2).toString();
            System.out.println(processos + descr);

            try {
                databaseManager.saveTable(intIDinternto, processos, descr, "aaaa");
            } catch (SQLException ex) {
                Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
            }

解决方案:首先使用对象,然后解析为字符串并进行比较。

for (int i = 0; i <10; i++) {
        String description = " ";
            int processos = Integer.parseInt(jTable2.getValueAt(i, 0).toString());

            Object descr = jTable2.getModel().getValueAt(i, 1);
            if (descr!= null)
                 description = jTable2.getModel().getValueAt(i, 1).toString(); 
            else
              description = ".";

            //String data = jTable2.getValueAt(i, 2).toString();
            System.out.println(processos + description);

            try {
                databaseManager.saveTable(intIDinternto, processos, description, "aaaa");
            } catch (SQLException ex) {
                Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
            }

1 个答案:

答案 0 :(得分:1)

您必须进行检查,例如:

String descr = jt.getValueAt(0, 1).toString();
int storedValue = 0;

//check if your value is a correct integer or not
if (descr.matches("\\d+")) {
    storedValue = Integer.parseInt(descr);

} else {
    System.out.println("Exception");
}
System.out.println(storedValue);

这个想法:如果输入正确,请使用正则表达式descr.matches("\\d+")检查您的值是否正确,然后您可以解析它,否则您不能抛出异常或任何其他内容< / p>