2011-06-09 67 views
0

Iam使用javafx使用prepardstatement更新数据库,但在运行时iam在控制台获取此错误并且在编译时不显示。它看起来像字符串没有得到它输入的值。也许我是错的还是搞清楚将字符串转换为整数用于准备陈述

var input: TextBox; 

var inputnum = Integer.parseInt({input.text}); 


stmt = conn.prepareStatement("INSERT into dummy2 values(?,?,?)"); 
      stmt.setString(1,""); 
      stmt.setString(2, ""); 
      stmt.setInt(3, inputnum); 

收到错误: -

java.lang.NumberFormatException: For input string: "" 
     at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) 
     at java.lang.Integer.parseInt(Integer.java:468) 
     at java.lang.Integer.parseInt(Integer.java:497) 
     at testint.Main$Main$Script.applyDefaults$(Main.fx:36) 
     at testint.Main$Main$Script.applyDefaults$(Main.fx:36) 
     at testint.Main.javafx$run$(Main.fx) 

回答

1

它不会在编译时表示,没有 - input.text是一个空字符串(在执行时),当你试图解析它,那是失败的。

你需要弄清楚input.text为空时你想要做什么。

+0

在我的javafx代码中,验证工作正常,但是如果我引用一个变量作为参数发送给结果集,我将获得非法的前向引用错误。例如: – jbsuser 2011-06-11 15:44:37

+0

@ jbs123:恐怕你真的没有把自己弄清楚。 – 2011-06-11 16:16:25

+0

@skeet不要害怕它只是尝试一种新的方式使用javafx,我自己修复它谢谢 – jbsuser 2011-06-12 06:36:59

2

因为您要解析的字符串是"",因此无法解析为int

您可能需要验证输入,或者如果您想允许""然后为这种情况分配一些默认值。