C# SQL Server:使用update命令时,数据更新了所有行中的相同行值

C# SQL Server:使用update命令时,数据更新了所有行中的相同行值,c#,sql-server,C#,Sql Server,SQL Server数据在使用update命令时更新了所有行中的相同行值 try { SqlConnection myConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["NORTHWNDConnectionString"].ToString()); myConnection.Open(); foreach (var i in ord) { SqlCommand sq

SQL Server数据在使用update命令时更新了所有行中的相同行值

try {
    SqlConnection myConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["NORTHWNDConnectionString"].ToString());
    myConnection.Open();

    foreach (var i in ord) {
        SqlCommand sqlcm = new SqlCommand("update Orders Set CustomerID = @CustomerID, EmployeeID = @EmployeeID, ShipVia = @ShipVia, ShipName = @ShipName, ShipAddress = @ShipAddress, ShipCity = @ShipCity, ShipCountry = @ShipCountry", myConnection);

        sqlcm.Parameters.AddWithValue("@CustomerID", i.CustomerID);
        sqlcm.Parameters.AddWithValue("@EmployeeID", i.EmployeeID);
        sqlcm.Parameters.AddWithValue("@ShipVia", i.ShipVia);
        sqlcm.Parameters.AddWithValue("@ShipName", i.ShipName);
        sqlcm.Parameters.AddWithValue("@ShipAddress", i.ShipAddress);
        sqlcm.Parameters.AddWithValue("@ShipCity", i.ShipCity);
        sqlcm.Parameters.AddWithValue("@ShipCountry", i.ShipCountry);

        sqlcm.ExecuteNonQuery();
        sqlcm.Dispose();
    }

    myConnection.Close();
}
使用此C#代码,所有行中的数据都将相同:

10248   VINET   5   3   Vins et alcools Chevalier   59 rue de l'Abbaye  Reimsesddf  France
10249   VINET   5   3   Vins et alcools Chevalier   59 rue de l'Abbaye  Reimsesddf  France
10250   VINET   5   3   Vins et alcools Chevalier   59 rue de l'Abbaye  Reimsesddf  France
我已将10248 id的
Reims
更改为
reimsesdf
,但它反映在所有行中,并且其他数据将在所有行中更新


如何修复此问题?

您的
更新
语句缺少
where
条件-因此它会更新表中的所有记录:

update Orders Set 
  CustomerID = @CustomerID, EmployeeID= @EmployeeID, 
  ShipVia=@ShipVia, ShipName=@ShipName,
  ShipAddress=@ShipAddress,ShipCity=@ShipCity,
  ShipCountry= @ShipCountry
中添加一些条件,其中
(通过记录ID或其他方式)可防止:

update Orders Set 
  CustomerID = @CustomerID, EmployeeID= @EmployeeID, 
  ShipVia=@ShipVia, ShipName=@ShipName,
  ShipAddress=@ShipAddress,ShipCity=@ShipCity,
  ShipCountry= @ShipCountry
where ID = @ID

您的
update
语句缺少
where
条件-因此它会更新表中的所有记录:

update Orders Set 
  CustomerID = @CustomerID, EmployeeID= @EmployeeID, 
  ShipVia=@ShipVia, ShipName=@ShipName,
  ShipAddress=@ShipAddress,ShipCity=@ShipCity,
  ShipCountry= @ShipCountry
中添加一些条件,其中
(通过记录ID或其他方式)可防止:

update Orders Set 
  CustomerID = @CustomerID, EmployeeID= @EmployeeID, 
  ShipVia=@ShipVia, ShipName=@ShipName,
  ShipAddress=@ShipAddress,ShipCity=@ShipCity,
  ShipCountry= @ShipCountry
where ID = @ID

当然,您没有WHERE条件来选择要更新的记录。SQL 101。需要教程吗?当UPDATE语句中缺少WHERE条件时,所有记录都会更新。当然,您没有WHERE条件来选择要更新的记录。SQL 101。需要教程吗?当UPDATE语句中缺少WHERE条件时,将更新所有记录。