我正在尝试更新SQL Server表中的数据。在查询执行后,我收到一条消息,表明已保存数据。
但是当我检查该表时,我发现数据未保存。我的查询有什么不对吗?
我正在使用SQL Server 2008和C#进行编码。
SqlCommand cmd1 = new SqlCommand("UPDATE Inward_Rpt SET Date='" + date + "',Cashier_Name='" + cashier_name + "',Supplier_Code='" + sup_code + "',Supplier_Name='" + name + "',Payment_Mode ='" + p_method + "',Total_Bill='" + tot_bill + "',Total_Paid='" + tot_paid + "',Previous_Due = '" + total_due + "',Current_Due ='" + c_due + "',Remark ='" + remark + "'WHERE Supplier_Name='" + name + "'", con);
cmd1.ExecuteNonQuery();
MessageBox.Show("Data Saved..");
答案 0 :(得分:0)
数据库表中的所有字段都是字符串数据类型吗?检查数据类型因为您为所有数据提供单引号。如果表数据类型为数字,则删除单引号。
SqlCommand cmd1 = new SqlCommand("UPDATE Inward_Rpt SET Date='" + date + "',Cashier_Name='" + cashier_name + "',Supplier_Code=" + sup_code + ",Supplier_Name='" + name + "',Payment_Mode ='" + p_method + "',Total_Bill='" + tot_bill + "',Total_Paid='" + tot_paid + "',Previous_Due = '" + total_due + "',Current_Due ='" + c_due + "',Remark ='" + remark + "'WHERE Supplier_Name='" + name + "'", con);
答案 1 :(得分:0)
我想我发现了你的错误。您的WHERE
子句使用的是与您更新供应商名称相同的name
。假设这是一个新名称,您将永远找不到要更新的记录。以下代码更清晰,不易出现注入问题,它应该按照您想要的方式工作。
请注意,您必须提供新变量以迎合name
/ sup_name
情况。
SqlCommand cmd1 = new SqlCommand();
cmd1.Connection = con;
cmd1.CommandText = @"
UPDATE Inward_Rpt
SET Date = @date
, Cashier_Name = @cashier_name
, Supplier_Code = @sup_code
, Supplier_Name = @sup_name
, Payment_Mode = @p_method
, Total_Bill = @tot_bill
, Total_Paid = @tot_paid
, Previous_Due @total_due
, Current_Due = @c_due
, Remark = @remark
WHERE Supplier_Name = @name";
cmd1.Parameters.AddWithValue("@date", date);
cmd1.Parameters.AddWithValue("@cashier_name", cashier_name);
cmd1.Parameters.AddWithValue("@sup_code", sup_code);
cmd1.Parameters.AddWithValue("@sup_name", sup_name);
cmd1.Parameters.AddWithValue("@p_method", p_method);
cmd1.Parameters.AddWithValue("@tot_bill", tot_bill_name);
cmd1.Parameters.AddWithValue("@tot_paid", tot_paid);
cmd1.Parameters.AddWithValue("@total_due", total_due);
cmd1.Parameters.AddWithValue("@c_due", c_due);
cmd1.Parameters.AddWithValue("@remark", remark);
cmd1.Parameters.AddWithValue("@name", name);
cmd1.ExecuteNonQuery();
MessageBox.Show("Data Saved..");