繁体   English   中英

如何转换数据类型以避免System.FormatException?

[英]how to convert a data type avoiding System.FormatException?

我试图接收一个字符串并将其转换为整数,代码是这样的:

        int menu = 3
        int orden = 0;
        string query = @"select max(oppord)+1 as orden
                         from rhlibry.vaoppfi
                         where pincor = " + menu;
        OdbcConnection cn = new OdbcConnection("dsn=RHLIBRY;uid=PC00;pwd=PC00;");
        OdbcCommand cmd = new OdbcCommand(query, cn);
        cn.Open();
        OdbcDataReader oa = cmd.ExecuteReader();
        while (oa.Read())
        {
            orden = Int32.Parse(oa["orden"].ToString());
        }
        return orden;

sql查询以字符串格式返回“ orden”,我需要将其转换为整数。

orden = Int32.Parse(oa["orden"].ToString()); 返回类型为System.FormatException的错误。

为什么? 我做错了吗

请帮帮我 !

谢谢

这可能是因为您的查询返回了空值。

假设您有一个类别表,该表的ID列的值为1,2,3。 如果运行此查询:

SELECT Max(Id)+1 As Id From Category WHERE Id = -1

您将收到以下结果:

Id
----------
NULL

因此,当您使用Int32.Parse(oa["Id"].ToString())您将收到FormatException。

作为修复,您可以使用:

SELECT ISNULL(Max(Id),0)+1 As Id From Category WHERE Id = -1

同样,如果您的业务逻辑允许,则可以删除条件。

同样在C#端,您可以使用int.TryParse():

int id = 0;
var idObject= oa["Id"];
if (idObject!=null)
   int.TryParse(oa["Id"].ToString(), out id);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM