Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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
C# 数据未保存在SQL Server表中_C#_Sql_Sql Server - Fatal编程技术网

C# 数据未保存在SQL Server表中

C# 数据未保存在SQL Server表中,c#,sql,sql-server,C#,Sql,Sql Server,我正在尝试更新SQL Server表中的数据。执行查询后,我收到一条消息,表示数据已保存 但当我签入该表时,我发现数据没有保存。我的问题有什么不对吗 我使用SQLServer2008和C进行编码 SqlCommand cmd1 = new SqlCommand("UPDATE Inward_Rpt SET Date='" + date + "',Cashier_Name='" + cashier_name + "',Supplier_Code='" + sup_code + "',Supplie

我正在尝试更新SQL Server表中的数据。执行查询后,我收到一条消息,表示数据已保存

但当我签入该表时,我发现数据没有保存。我的问题有什么不对吗

我使用SQLServer2008和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.."); 

数据库表中的所有字段都是字符串数据类型吗?检查数据类型,因为您为所有数据提供单引号。如果表数据类型为数字,请删除单引号

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);

我想我发现了你的错误。WHERE子句使用的名称与更新供应商名称时使用的名称相同。假设这是一个新名称,您将永远找不到要更新的记录。下面的代码更简洁,不容易出现注入问题,它应该按照您想要的方式工作

请注意,您必须提供一个新变量以适应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.."); 

不,某些字段数据类型为int,有些是钱和日期also@ShivvanandPatil查询中的int数据类型是什么?供应商代码是intdatatype@ShivvanandPatil在回答上面,我运行了一个查询,没有..仍然没有更新-你不应该把你的SQL语句连接在一起-使用参数化查询来避免SQL注入-检查出你能给我们看一下你的用于连接到SQL Server的连接字符串?尝试用try-and-catch来包围这段代码,并放置断点编辑:此外,您还可以尝试将所有cmd1字符串复制到数据库中,并检查查询是否最有可能没有错误,将SQL命令连接在一起,有些地方出了问题-只是不要这样做-永远不要-使用一个正确参数化的更新查询代替!通过调试器运行程序。在cmd1.ExecuteOnQuery行上放置断点;并查看将要发送到数据库的查询。如果它看起来不错,那么直接复制粘贴到SSMS中,并运行它。这种方法可以更快地发现您的问题,而不是期望我们为您猜测。@ShivvanandPatil这有助于解决您的问题吗?