使用以下代码遇到麻烦。方法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>
非常感谢。
答案 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;";