我想知道如何在c#.net中生成第一个自动编号

时间:2014-12-17 15:56:11

标签: c#

我输入此代码以获取C#.net中的自动编号:

public void AutoNumber()
{
    SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=Ganesh;Integrated Security=True");
    con.Open();
    SqlCommand cmd = new SqlCommand("SELECT Max(Eid) as Tot FROM Employee_Payment", con);

    SqlDataReader dr;

    dr = cmd.ExecuteReader();
    while (dr.Read())
    {
        int i = Convert.ToInt32(dr["Tot"]);
        if (i > 0)
        {
            int j = i + 1;
            txtid.Text = Convert.ToString(j);

        }
        else
        {
            txtid.Text = "101";
        }

    }

    con.Close();
}

但是当数据库不包含任何记录时,它会显示错误Object cannot be cast from DBNull to other types.

请为此提供解决方案。

2 个答案:

答案 0 :(得分:1)

由于几个原因,您选择的方法不可靠。首先,正如您所发现的,如果表没有行,则无法确定列的当前标识值。此外,如果您要删除具有最高Eid的行,您将得到不正确的结果。您可以使用以下查询获取Identity列的当前值:

SELECT IDENT_CURRENT('Employee_Payment') AS Current_Identity

答案 1 :(得分:0)

为什么不在数据库中创建一个标识列并将其设置为自动编号?

如果你必须这样做,那么如果你的表不包含任何行,请创建一个并将Eid指定为1,然后插入