C# IDs的临时自动递增值

C# IDs的临时自动递增值,c#,sql-server-2008,auto-increment,C#,Sql Server 2008,Auto Increment,出于某种原因,我不想使用SQL Server的自动递增值,我想为我的数据库ID创建自己的递增值 我想做的是,例如,我将添加一个产品。我将通过MAX query获取最后一个ProductID的最后一个值并加1,然后我将插入该值作为当前产品的ProductID 我的代码是这样的 private static int x; private static int y = 1; private static int z; private static int ID; p

出于某种原因,我不想使用SQL Server的自动递增值,我想为我的数据库ID创建自己的递增值

我想做的是,例如,我将添加一个产品。我将通过MAX query获取最后一个ProductID的最后一个值并加1,然后我将插入该值作为当前产品的ProductID

我的代码是这样的

    private static int x;
   private static int y = 1;
   private static int z;
   private static int ID;

    private void AddnewProduct_Click(object sender, EventArgs e)
    {
       x = ID;
       z = x + y;
       lblProductIDnew.Text = Convert.ToString(z);

    }
    private void AddProduct_Load(object sender, EventArgs e)
    {
        crud.FillDataGrid("Select * From IDs", ref dgvIDs);    

        using (SqlConnection connection = new SqlConnection("Data Source=DESKTOP-MQKIBSK\\SQLEXPRESS;Initial Catalog=MARISCHELLdatabase;Integrated Security=True"))
        {
            connection.Open();
            string query = "SELECT MAX(ProductID) FROM IDs";
            SqlCommand cmd = new SqlCommand(query, connection);
            ID = (int)cmd.ExecuteScalar();
            lblProductID.Text = ID.ToString();
        }
    }
有没有更简单的方法?谢谢大家


更新:我不想使用SQL auto increment的原因是当您将数据发送到另一个数据库(存档)时,而当您想恢复数据时,您不能使用SQL auto increment,因为您不能在该标识列中输入值。因此,每次您将数据发送到存档和还原时,productID都会更改。而设置身份的开关也不起作用。如果这附近有作品,我很乐意使用。再次感谢大家

“有更简单的方法吗?”
-好吧,SQL Server内置了身份验证功能。你不使用它的原因是什么?
出于某种原因……
你自己使用它的唯一原因是你希望它迟早会失败。它的呈现方式不是递增的,当您尝试使用它时,它很可能会过时。如果两个人同时选择MAX,会发生什么?为您提供的标识列非常灵活,请使用合适的工具完成此任务。出于多种原因,您应该使用内置标识列。@FutureDev:
“因为您无法为该标识列输入值”
-不正确: