数据未保存在SQL Server表中

时间:2017-09-14 09:14:59

标签: c# sql sql-server

enter image description here

我正在尝试更新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.."); 

2 个答案:

答案 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..");