我有这个代码,首先检查数据库中是否已存在特定的prodName
。如果确实存在,我必须更新quantity
的{{1}}。如果没有,我必须插入数据。我的问题是,这是一个很好的代码吗?我的意思是打开和关闭这样的连接是一种很好的做法,还是有什么方法可以改进它?就像每个查询一样,我每次都要写这些开始和结束行。任何人都可以建议一个很好的方法来保存这些重复的代码行,或者它只是这样做的?
prodName
答案 0 :(得分:0)
你可以使用
使用
public static void manageStock(CompanyStock stock)
{
using(var con=new SqlConnection("ConnectionString"))
{
cmd = new SqlCommand("select count(*) from tblStock where prodName=@prodName", con);
cmd.Parameters.AddWithValue("@prodName", stock.prodName);
int count;
count = (Int32)cmd.ExecuteScalar(); //returns null if doesnt exist
if (count > 0)
{
cmd = new SqlCommand("select quantity from tblStock where prodName=@prodName", con);
cmd.Parameters.AddWithValue("@prodName", stock.prodName);
qty = (Int32)cmd.ExecuteScalar();
stock.quantity += qty;
cmd = new SqlCommand("update tblStock set quantity = @quantity where prodName=@prodName", con);
cmd.Parameters.AddWithValue("@prodName", stock.prodName);
cmd.Parameters.AddWithValue("@quantity", stock.quantity);
}
else
{
cmd = new SqlCommand("insert into tblStock(prodName,quantity) values (@prodName, @quantity)", con);
cmd.Parameters.AddWithValue("@prodName",stock.prodName);
cmd.Parameters.AddWithValue("@quantity",stock.quantity);
}
cmd.ExecuteNonQuery();
}
}
答案 1 :(得分:0)
你可以在打开之前检查它的状态,
if (con.State == ConnectionState.Closed)
{
con.Open();
}