0

我有一个问题。

目前,我正在尝试将字符串值转换为整数。在这种情况下,字符串值是数据类型为 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");

谁能建议我如何解决它?

谢谢

4

5 回答 5

3

你只是接近它。

您正在尝试解析一个字符串"order_number",而不是您的实际订单号字符串order_number

order_number=rs.getString("orderid");
int order_no = Integer.parseInt(order_number);  // remove those quotes
于 2013-07-26T06:10:16.900 回答
1

尝试:

Integer.parseInt(order_number);

这里应该是可变的。

于 2013-07-26T06:08:32.953 回答
1

您应该删除引号。

尝试, Integer.parseInt(order_number);, 而不是Integer.parseInt("order_number");

在您解析字符串 *order_number* 而不是解析变量之前。

于 2013-07-26T06:11:01.737 回答
1
int order_no = Integer.parseInt("order_number");

当你说上面的语句时,你的意思是字符串“order_number”是一个整数,让我知道(不是。)。您将数据存储在名为 order_number的字符串中。因此,要检索您的整数,您必须执行 -

int order_no = Integer.parseInt(order_number);
于 2013-07-26T06:12:48.097 回答
0

老兄的问题是你试图将一个字符串值转换为 int 这是不可能的。事情从这里开始

您的代码在这里 order_number=rs.getString("orderid"); int order_no = Integer.parseInt("order_number"); order_number 变量是 String,您将其转换为 int。您可以做的是将 String select_max_order_id 设为 int 而不是 int 并且在病房中您不需要任何转换。

于 2013-07-26T06:23:56.317 回答