Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 更新数据(如果存在)_Sql Server_Vb.net - Fatal编程技术网

Sql server 更新数据(如果存在)

Sql server 更新数据(如果存在),sql-server,vb.net,Sql Server,Vb.net,如果产品尺寸存在,我可以更新数据。假设该表已有一个product_大小(大小7),其中product_存量为15,我想添加大小。例如,我在产品尺寸(尺寸7)上添加了一个产品库存(15件),因此尺寸7的产品库存将为30件。我的问题是,如果产品尺寸不存在,如何添加数据 Public子addProductsExtension() 尝试 数据库连接() search_query=“从tblproducts_扩展中选择*,其中product_code=@product_code;” command=new

如果产品尺寸存在,我可以更新数据。假设该表已有一个product_大小(大小7),其中product_存量为15,我想添加大小。例如,我在产品尺寸(尺寸7)上添加了一个产品库存(15件),因此尺寸7的产品库存将为30件。我的问题是,如果产品尺寸不存在,如何添加数据

Public子addProductsExtension()
尝试
数据库连接()
search_query=“从tblproducts_扩展中选择*,其中product_code=@product_code;”
command=newsqlcommand
指挥
.连接=连接
.CommandText=搜索\查询
.Parameters.Clear()
.Parameters.AddWithValue(“@product_code”,productsView.txtPCode.Text)
dataReader=.ExecuteReader()
如果dataReader.HasRows,则
而dataReader.Read
updateExtension()
MsgBox(“更新股票”)
结束时
其他的
addExtension()
如果结束
以
捕获ex作为SqlException
MsgBox(“错误:+ex.Message)
最后
连接。关闭()
command.Dispose()命令
结束尝试
端接头
“这些是增加尺寸和库存的代码
公共子附录扩展()
尝试
数据库连接()
insert_query=“插入tblproducts_扩展(产品大小、产品库存、产品代码)值(@product_大小、@product_库存、@product_代码);”
command=newsqlcommand
指挥
.连接=连接
.CommandText=插入\u查询
.Parameters.Clear()
.Parameters.AddWithValue(“@product\u size”,productsView.comboSize.SelectedItem)
.Parameters.AddWithValue(“@product_stocks”,productsView.txtProductStocks.Text)
.Parameters.AddWithValue(“@product_code”,productsView.txtPCode.Text)
结果=.ExecuteNonQuery()
如果结果=0,则
MsgBox(“添加数据时出错”)
其他的
MsgBox(“已成功添加数据”)
如果结束
以
捕获ex作为SqlException
MsgBox(“错误:+ex.Message)
最后
连接。关闭()
command.Dispose()命令
结束尝试
端接头
'如果产品尺寸存在,则这些代码用于更新库存
公共子更新扩展()
尝试
数据库连接()
update_query=“update tblproducts_扩展集product_stocks=product_stocks+@product_stocks,其中product_size=@product_size和product_code=@product_code;”
command=newsqlcommand
指挥
.连接=连接
.CommandText=更新\u查询
.Parameters.Clear()
.Parameters.AddWithValue(“@product\u size”,productsView.comboSize.SelectedItem)
.Parameters.AddWithValue(“@product_stocks”,productsView.txtProductStocks.Text)
.Parameters.AddWithValue(“@product_code”,productsView.txtPCode.Text)
.ExecuteNonQuery()
以
捕获ex作为SqlException
MsgBox(“错误:+ex.Message)
最后
连接。关闭()
command.Dispose()命令
结束尝试
端接头

您当前的代码不起作用,因为在初始选择中,您只搜索产品代码。这还不足以决定是否要添加或更新记录,因为您需要将新数量添加到具有特定大小的产品中。因此,您可以简单地将这个其他参数添加到select查询中(就像您在更新中所做的那样),您的代码应该按原样工作

但是,我们可以使用关键字,只需一次调用即可更新或插入您的数据

string query = @"MERGE tblproducts_extension T
                 USING (1 as dummy) as S 
                 ON T.product_size = @product_size AND T.product_code = @product_code
                 WHEN NOT MATCHED THEN 
                     INSERT (product_code, product_size, product_stocks)
                     VALUES (@product_code, @product_size, @newQuantity)
                 WHEN MATCHED THEN 
                     UPDATE SET product_stocks = T.product_stocks + @newQuantity;";

您当前的代码不起作用,因为在初始选择中,您只搜索产品代码。这还不足以决定是否要添加或更新记录,因为您需要将新数量添加到具有特定大小的产品中。因此,您可以简单地将这个其他参数添加到select查询中(就像您在更新中所做的那样),您的代码应该按原样工作

但是,我们可以使用关键字,只需一次调用即可更新或插入您的数据

string query = @"MERGE tblproducts_extension T
                 USING (1 as dummy) as S 
                 ON T.product_size = @product_size AND T.product_code = @product_code
                 WHEN NOT MATCHED THEN 
                     INSERT (product_code, product_size, product_stocks)
                     VALUES (@product_code, @product_size, @newQuantity)
                 WHEN MATCHED THEN 
                     UPDATE SET product_stocks = T.product_stocks + @newQuantity;";

您是在询问此代码中的问题,还是在询问是否有更好的方法来解决此问题?两个兄弟:)您的选择仅通过产品id查找产品,同时还需要大小值。这将使您的代码运行,尽管可以使用MERGE关键字简化,但我对该关键字并不熟悉。顺便问一下,如何使用它?无论如何,谢谢。我和其他许多人强烈建议您不要使用AddWithValue:您是在问代码中的问题,还是在问是否有更好的方法来解决此问题?两个兄弟:)您的选择仅通过产品id查找产品,同时还需要尺寸值。这将使您的代码运行,尽管可以使用MERGE关键字简化,但我对该关键字并不熟悉。顺便问一下,如何使用它?无论如何,谢谢。我和其他许多人强烈建议您不要使用AddWithValue: