C#ExecuteScalar() - 必须小于无限?

时间:2012-01-11 12:35:10

标签: c# sql

使用以下代码遇到麻烦。方法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.但是这不会发生。< / p>

非常感谢。

2 个答案:

答案 0 :(得分:8)

如果表为空,则查询不会返回0,它将返回NULL。您可以使用的是

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

答案 1 :(得分:4)

变化:

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

为:

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