我正在用一种形式做一个简单的插入。
dbname_m_db
并希望再次查看。所以我正在进行4次测试
test1:插入no_text
test2:插入no_text_external
test3:插入no_text& no_text_external
test4:不插入两者
所以结果是,只有test3成功查看它。而其他3返回错误号格式异常:对于输入字符串:“”。我不知道过滤它的最佳方法。这里是我工作的代码。有什么想法吗?
public void getDataById(Connection con){
try{
ps = con.createStatement();
rs = ps.executeQuery("SELECT * FROM "+ dbname_m_db +" WHERE id_m_db ='"+ this.getId_m_db() +"' AND status_data ='1'");
while (rs.next()) {
this.setNo_text(rs.getString("no_text"));
this.setNo_text_external(rs.getString("no_text_external"));
}
int int_no_text = Integer.valueOf(this.getNo_text());
int int_no_text_external = Integer.valueOf(this.getNo_text_external());
this.setNo_text_value(au.getTextById(con, int_no_text));
this.setNo_text_external_value(au.getTextExternalById(con, int_no_text_external));
} catch (Exception e) {
throw new RuntimeException(e);
}
}
答案 0 :(得分:1)
为了处理NumberFormatException
错误,您应该在执行String
之前验证Integer.valueOf()
。
您可以验证字符串是否为空:
int int_no_text;
if (!this.getNo_text().isEmpty) {
int_no_text = Integer.valueOf(this.getNo_text());
}
老实说,我并不是真的喜欢这种方法,因为一个人既不验证字符串是否为null,或者它是否包含,实际上是一个整数。
因此,可以使用一个非常好的实用工具类NumberUtils
,并验证我们是否存在数字:
int int_no_text;
if (NumberUtils.isNumber(this.getNo_text())) {
int_no_text = Integer.valueOf(this.getNo_text());
}
基本上,这样就可以检查字符串是否是有效的Java编号,因此null
和空/空字符串将返回false。
答案 1 :(得分:0)
当您从表中获取整数值时,您似乎正在传递一个空字符串。我会检查以确保您在将其转换为int之前从表中获得预期返回