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

本文关键字:第一个 编号 net 想知道 | 更新日期: 2023-09-27 18:34:26

我键入此代码以在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.

请为此提供解决方案。

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

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

SELECT IDENT_CURRENT('Employee_Payment') AS Current_Identity

为什么不简单地在数据库中创建一个身份列并将其设置为自动编号呢?

如果你必须这样做,那么如果你的表没有行,创建一个并将Eid分配给1,然后插入