执行INSERT时,使用计数器将数字添加到值

时间:2014-08-25 19:55:42

标签: c# sql counter

现在,我有一个函数在调用时将新的篮子项插入数据库。我想要改变的是如何设置[Sku]参数。我想尝试使用一个带有字符串值的计数器变量(在这种情况下,字符串值是“SetupFee”),这样每个插入的项目的Sku参数都不同。

例如,如果有5个项目,我希望计数器变量为Sku参数添加1,2,3,4等,以便每个产品具有不同的sku。这有点奇怪,但根据事物的设置方式,这是最好的选择。我以前从未尝试过使用计数器作为查询的一部分。关于我如何处理这个问题的任何建议?

这是我的功能:

     protected void UpdateBasketItems(int BasketID, string BasketItemName, decimal FeeAmount, int ProductId)
    {
        try 
        { 
            int count = 0;
            Basket basket = AbleContext.Current.User.Basket;

            IList<BasketItem> items = GetBasketItems();

            string query = "INSERT INTO ac_BasketItems ([ParentItemId], [BasketId], [BasketShipmentId], [ProductId], [TaxCodeId], [Name], [Sku], [Price], [Weight], [Quantity], [OrderItemTypeId], [OrderBy], [ShippableId], [LastModifiedDate], [TaxAmount], [TaxRate], [CreatedDate] )VALUES (0, @BasketID, (SELECT MAX(BasketShipmentId) FROM [ac_BasketItems] WHERE [BasketID] = @BasketID), 19524, 1,'" + BasketItemName + "','SetupFee'," + FeeAmount + ", 0, 1, 0, 999, 0, Current_TimeStamp, 0, 0, Current_TimeStamp)";

            using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["AbleCommerce"].ToString()))
            {
                cn.Open();                
                SqlCommand cmd = new SqlCommand(query, cn);
                cmd.Parameters.Add(new SqlParameter("@BasketID", BasketID));

                cmd.CommandType = CommandType.Text;
                cmd.ExecuteNonQuery();
                cn.Close();

            }

        }
        catch (Exception x)
        {
            Response.Write("ERROR with UpdateBasketItems(): " + x.Message.ToString() + "<br />");
        }
    }

1 个答案:

答案 0 :(得分:0)

MS SQL Server的简单(内置功能):

执行此操作的最简单方法是在要插入的表中创建identity列。您可以使用SCOPE_IDENTITY()函数在插入后获取该值。

但是,如果您的表已经有一个现有的标识列(一个您不能使用的标识列),您可以创建一个具有单行的Sequence表。该行将包含next_seq值,插入后您将获得该值并更新+ 1