我有一个问题。当将varchar(500)latin1_swedish_ci mysql数据类型转换为整数时出现NumberFormatException
目前,我试图将字符串值转换为整数。在这种情况下,字符串值是数据类型为varchar(500)latin1_swedish_ci的数据库中的值。
从数据库中提取值后,我想转换为整数,因为我有一些进一步处理作为整数值。
以下是我的代码。
String order_number="";
DbEngine db = new DbEngine();
String select_max_order_id = " SELECT MAX(orderid) AS orderid FROM `orders` ";
try{
Connection con = db.getConnection();
con.setAutoCommit(false);
PreparedStatement prp_select = con.prepareStatement(select_max_order_id);
ResultSet rs = prp_select.executeQuery();
while(rs.next()){
order_number=rs.getString("orderid");
int order_no = Integer.parseInt("order_number");
order_no+=1;
order_number = Integer.toString(order_no);
}
con.commit();
con.close();
}
catch(SQLException ex) {
System.out.println("Error"+ex.getSQLState());
}
catch(ClassNotFoundException ex) {
System.out.println("Error"+ex.getException());
}
catch(NumberFormatException ex) {
System.out.println("Parsing Error"+ex.getStackTrace());
}
问题是,当order_number被解析为字符串值,抛出NumberFormatException。 这是来自服务器的堆栈跟踪。 [Ljava.lang.StackTraceElement; @ 257f04
但是,当我传递确切的字符串值,如int order_no = Integer.parseInt(“10”);
任何人都可以建议我如何解决它吗?
感谢
您能否将'ex.printStackTrace();'添加到您的catch块中,然后编辑您的帖子以显示stacktrace是什么? – beny23
如果你的字段应该总是包含一个数字,为什么你使用varchar字段呢? –
另请注意,如果在同一时间创建两个新订单,则此方法可能会导致重复的订单号。您可能需要考虑为您的订单号使用序列。 – beny23