现在,我有一个函数在调用时将新的篮子项插入数据库。我想要改变的是如何设置[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 />");
}
}
答案 0 :(得分:0)
MS SQL Server的简单(内置功能):
执行此操作的最简单方法是在要插入的表中创建identity
列。您可以使用SCOPE_IDENTITY()
函数在插入后获取该值。
但是,如果您的表已经有一个现有的标识列(一个您不能使用的标识列),您可以创建一个具有单行的Sequence表。该行将包含next_seq值,插入后您将获得该值并更新+ 1