当前位置: 首页 > 知识库问答 >
问题:

将varchar(500)latin1_swedish_cimysql数据类型转换为整数时的NumberFormatException

贝阳泽
2023-03-14

我有一个问题。

目前,我正在尝试将字符串值转换为整数。在本例中,字符串值来自数据类型为varchar(500)latin1\u swedish\u 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\u no=Integer这样的精确字符串值时。parseInt(“10”);

有人能建议我如何解决它吗?

谢谢

共有3个答案

糜宜民
2023-03-14

你应该删除引号。

试试看,Integer。parseInt(订单号) ,而不是整数。parseInt(“订单号”)

在解析字符串*order\u number*而不是解析变量之前。

金泉
2023-03-14

尝试:

Integer.parseInt(order_number);

这里应该是可变的。

司马狐若
2023-03-14

你只是接近它。

您试图解析的是字符串“order\u number”,而不是实际的订单号字符串

order_number=rs.getString("orderid");
int order_no = Integer.parseInt(order_number);  // remove those quotes
 类似资料:
  • 问题内容: 我正在尝试使用存储过程基于varchar类型的“名称”列的输入值来返回“项目”表的“ ItemId”列值,但是每当我将任何值传递给存储过程时,它都会向我返回错误: 将数据类型varchar转换为int时出错。 这就是我所说的: 问题答案: 您必须匹配参数:RETURN不会填充OUTPUT参数:您对@itemid的赋值可以做到这一点。 另外,您存储的过程太复杂了。对于从存储的proc返回

  • 问题内容: 在SO上进行了搜索和搜索,无法弄清楚 尝试将每个字段作为FLOAT进行铸造都无济于事,转换没有给我任何进一步的帮助。 如何获取以下case子句以返回THEN部分中所述的值? 错误:消息8114,级别16,状态5,行1将数据类型varchar转换为float时出错。 我的SQL查询的错误部分: average_days_pay = float terms_code = char 问题答案

  • 问题内容: 我创建了一个过程并收到了此消息 将varchar值’%’转换为数据类型int时,转换失败。 我不知道这可能是什么,但是当我将过程更改为这样时: 似乎工作正常。我是SQL的新手,所以可以得到任何帮助,也许有更好的方法来做我想做的事情? 问题答案: 这是在子句中: 是一个整数。因此,您需要将其转换为字符串: 为什么要使用称为的列是可疑的。也许您只想要:

  • 问题内容: 尝试运行SQL查询时出现此错误… 将varchar值’Id’转换为数据类型int时转换失败 请帮我 :( 问题答案: 在您的情况下,请确保一列是类型,另一列是类型。 由于优先级高于,因此列将隐式转换为 因此,将列明确转换为varchar。 我已经考虑了如果不是的类型,然后转换为

  • 问题内容: 我目前有一个表,其列为。该列可以容纳数字或文本。在某些查询期间,我将其视为一列(我将其与另一个表中的列进行连接) 只要在该字段中只有数字没有问题,但是即使是一分钟的分钟也有文本,而在此字段中没有数字,我就会收到“将数据类型转换为的错误”。即使在WHERE部分中,我也确保所有文本字段都没有出现。 为了解决这个问题,我创建了一个视图,如下所示: 但是,即使视图仅显示具有数字值的行并将Myc

  • 有这样的错误: [42000][257]从数据类型“NUMERIC”到“VARCHAR”的隐式转换 [42000][257]从数据类型“INT”到“VARCHAR”的隐式转换是