没有重复的主键

时间:2015-07-08 11:25:26

标签: c# sql-server

protected void btn_Insert_Click(object sender, EventArgs e)
{
    int result = 0;      

    storageprice sp = new storageprice(tb_PriceID.Text, tb_StorageName.Text, tb_Desc.Text, decimal.Parse(tb_StorePrice.Text), int.Parse(tb_OutletID.Text));

    result = sp.StoragePricingInsert();

    if (result > 1)
    {
        Response.Write("<script>alert('Storage Remove Successfullly');</script>");
    }
    else
    {
        Response.Write("<script>alert('Storage Removal not successfull');</script>");
    }        

    Response.Redirect("StoragePricingView.aspx");
}

C#文件

public int StoragePricingInsert()
{
    int result = 0;

    string queryStr = "INSERT INTO StoragePricing(Pricing_Id, Name, Description, Pricing, Outlet_Id)"
            + "values (@Pricing_ID, @Name, @Description, @Pricing, @Outlet_Id)";

    try
    {
        SqlConnection conn = new SqlConnection(connStr);

        SqlCommand cmd = new SqlCommand(queryStr, conn);
        cmd.Parameters.AddWithValue("@Pricing_Id", this.Pricing_Id);
        cmd.Parameters.AddWithValue("@Name", this.Name);
        cmd.Parameters.AddWithValue("@Description", this.Description);
        cmd.Parameters.AddWithValue("@Pricing", this.Pricing);
        cmd.Parameters.AddWithValue("@Outlet_Id", this.OutletId);

        conn.Open();
        result += cmd.ExecuteNonQuery(); // returns no. of rows affected. Must be >0
        conn.Close();

        return result;
    }
    catch (Exception ex)
    {
        return 0;
    }
}

如何仅在主键中插入1个唯一字符串?

如果我添加并按"bt01",我会说"bt01"它会提示已经在使用中。

非常感谢!

1 个答案:

答案 0 :(得分:1)

取决于。如果您不关心ID值是什么,让数据库处理它 - 它应该根据它的配置方式自动分配值 - 使用标识列作为主键,并为您分配值。

如果要以编程方式分配值,则需要使用一种方法在数据库中查找最高值整数,将其递增并将值分配给新记录。您需要将该方法和save方法放入单例中以使其线程安全,因此无法将相同的值添加两次。

您还可以使用Guid作为主键而不是int。