C# 更新库存系统的SQL命令
我开发了一个库存系统,在销售表单中,我们有一个datagridview,我们填充项目,然后“结算”按钮从库存中删除项目。但我的代码有时不起作用,我们的库存项目与使用SQL命令剪切的项目不一样 例如:我有20部手机,当我剪掉3部时,剩下7或5部。我认为我的命令不太容易阅读 这是我的密码:C# 更新库存系统的SQL命令,c#,sql-server,ado.net,C#,Sql Server,Ado.net,我开发了一个库存系统,在销售表单中,我们有一个datagridview,我们填充项目,然后“结算”按钮从库存中删除项目。但我的代码有时不起作用,我们的库存项目与使用SQL命令剪切的项目不一样 例如:我有20部手机,当我剪掉3部时,剩下7或5部。我认为我的命令不太容易阅读 这是我的密码: try { mycon.Open(); int y = 0; for (int i = 0; i < Data1.Rows.Count; i++) { Sq
try
{
mycon.Open();
int y = 0;
for (int i = 0; i < Data1.Rows.Count; i++)
{
SqlCommand cmd5 = new SqlCommand("UPDATE Pharmacy_Items Set Quantity= Quantity - " + Data1.Rows[y].Cells[2].Value + " where ItemName='" + Data1.Rows[y].Cells[1].Value + "'", mycon);
cmd5.ExecuteNonQuery();
y += 1;
}
mycon.Close();
}
catch (Exception)
{
MessageBox.Show("Erorr404");
}
试试看
{
mycon.Open();
int y=0;
对于(int i=0;i
带参数代码:
mycon.Open();
int y = 0;
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
string sql = "UPDATE [dbo].[Pharmacy_Items] Set Quantity= Quantity - @Quantity where ItemName=@ItemName";
using (SqlCommand cmd5 = new SqlCommand(sql, mycon))
{
cmd5.CommandType = CommandType.Text;
var qunatityParam = new SqlParameter { Value = dataGridView1.Rows[y].Cells[2].Value, SqlDbType = SqlDbType.Int, ParameterName = "Quantity" };
var itemNameParam = new SqlParameter { Value = dataGridView1.Rows[y].Cells[1].Value, SqlDbType = SqlDbType.VarChar, ParameterName = "ItemName" };
cmd5.Parameters.Add(qunatityParam);
cmd5.Parameters.Add(itemNameParam);
cmd5.ExecuteNonQuery();
}
y += 1;
}
mycon.Close();
mycon.Open();
int y=0;
对于(int i=0;i
With是否显示在gridview中?同一项目可能会显示多次。因此,当您运行该命令时,它会多次更新。-您不应该将SQL语句连接在一起,而应该使用参数化查询来避免SQL注入。您应该创建一个SqlCommand
,在for
循环之前使用参数,然后在循环内部仅设置参数值,以执行command@SQLInjectionalert我添加了带参数的sql命令,请看一看(:你所说的数量=数量-
?@RameshRajendran的意思是什么?@RameshRajendran我想减少数据库中的数量