【问题标题】:Insert INT into MySql table via label in Java - NumberFormatException通过Java中的标签将INT插入MySql表 - NumberFormatException
【发布时间】:2014-10-11 08:49:20
【问题描述】:

我正在尝试通过标签将 Int 插入到表中。所以我有 6 列,从 Name、Lastname 作为 varchars 开始,以及 Number、Points、Assists 和 Rebounds 作为整数。查询:

String sql = ("INSERT INTO `PlayerTable`(`Name`, `Lastname`, `Number`, `Points`, `Assists`, `Rebounds`) VALUES (?,?,?,?,?,?)");
        PreparedStatement ps = PlayerBase.get().prepareStatement(sql);
        ps.setString(1, playerNameFld.getText());
        ps.setString(2, playerLNFld.getText());

工作得很好,但是当我尝试解析时:

try {
            ps.setInt(3, Integer.parseInt(playerNumberFld.getText()));
        } catch (Exception e) {
            e.printStackTrace();
        }

我得到一个 NumberFormatException:对于输入字符串:“”SQLException:没有为参数 3 指定值。 我怎样才能解决这个问题?谢谢

【问题讨论】:

  • 您的playerNumberFld 为空。
  • 如果您的setInt 调用没有catch 块,您将不会收到SQLException ......这是您不应该的。 (如果你没有正确设置一个参数,你肯定不想继续SQL语句......)

标签: java mysql sql


【解决方案1】:
        try {
            ps.setInt(3, Integer.parseInt(playerNumberFld.getText()));
        } catch (Exception e) {
            ps.setInt(3,0);
            e.printStackTrace();
        }

playerNumberFld 为空。所以如果你试图解析异常来了。因此,如果出现异常,您只需将 0 放入 catch 块中并尝试

【讨论】:

  • 无条件?价值是什么?这对我来说听起来是个坏主意。通常最好早点检查有效输入,然后如果在准备 SQL 语句时出现任何问题,让该异常传播。 (我个人无论如何都不会赶上Exception...)
  • 但是谁能给我解释一下,当我在其中输入一个值时,playerNumberFld 是空的吗?
  • 好的,所以我检查了值是否正确!= Integer 的 null 然后执行查询,它可以工作。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多