C#执行标量()-必须小于无穷大

本文关键字:小于 无穷大 执行 标量 | 更新日期: 2023-09-27 18:19:56

下面的代码有点问题。方法NextIPID()应该简单地查找SQL Server中的一个表,该表返回字段IPID的最大值,然后将其加1,以获得序列中的下一个数字。

public int NextIPID()
    {
        string strConnect = BuildConnectionString();
        SqlConnection linkToDB = new SqlConnection(strConnect);
        linkToDB.Open();
        string sqlStat = "SELECT MAX(IPID) FROM tblInterestedParties;";
        SqlCommand sqlCom = new SqlCommand(sqlStat, linkToDB);   
        int intNextIPID = (Int32)sqlCom.ExecuteScalar();
        linkToDB.Close();
        return intNextIPID + 1;                             
    }

然而,我不断收到错误消息

从数字进行强制转换时,值必须是小于无穷大的数字。

我怀疑这是因为表当前为空,但我希望Execute Scalar返回"0",因此添加一意味着该方法返回下一个值,即1。然而,这并没有发生。

非常感谢您的协助。

C#执行标量()-必须小于无穷大

如果表为空,则查询不会返回0,而是返回NULL。你可以使用

SELECT ISNULL((SELECT MAX(IPID) FROM tblInterestedParties), 0)

更改:

string sqlStat = "SELECT MAX(IPID) FROM tblInterestedParties;";

至:

string sqlStat = "SELECT ISNULL(MAX(IPID), 0) FROM tblInterestedParties;";