更新函数(包括AddWithValue参数)将无法正常工作

时间:2012-08-29 07:49:31

标签: c# ado.net

我试图遍历一些数组,然后用新参数进行更新..

这是我的代码:

for (int i = 0; i < wholeArr.Length - 1; i++)
    {
        string[] temp = wholeArr[i].Split('-');
        UpdateQuery(int.Parse(temp[1]), int.Parse(temp[0]));



    }

这是我的更新功能:

public void UpdateQuery(int id, int newOrder)
{
    string sql = "update Tama38News set [OrderingNumber] = @OrderingNumber where [ID] = @ID";

    con = new SqlConnection(connection);
    con.Open();
    adapter = new SqlDataAdapter();
    command = new SqlCommand(sql, con);
    command.Parameters.AddWithValue("@ID", id);
    command.Parameters.AddWithValue("@OrderingNumber", newOrder);

    command.ExecuteNonQuery();
    con.Close();
}
事情是,我没有得到任何例外,但由于某种原因,DB不会受到影响..

任何想法为什么?

2 个答案:

答案 0 :(得分:3)

您确定要省略数组中的最后一项吗?

wholeArr.Length - 1更改为wholeArr.Length

for (int i = 0; i < wholeArr.Length; i++)
{
    string[] temp = wholeArr[i].Split('-');
    UpdateQuery(int.Parse(temp[1]), int.Parse(temp[0]));
}

也许只有一个项目,因此从未调用过UpdateQuery方法。您可以使用调试器来检查发生了什么。在循环中设置断点,然后按F10转到下一行。在快速监视窗口中检查值。

除此之外,您应该始终处置任何实现IDisposable的内容,尤其是using-statement最佳连接。

public void UpdateQuery(int id, int newOrder)
{
    string sql = "update Tama38News set [OrderingNumber] = @OrderingNumber where [ID] = @ID";
    using(var con = new SqlConnection(connection))
    {
        using(var command = new SqlCommand(sql, con))
        {
            con.Open();
            command.Parameters.AddWithValue("@ID", id);
            command.Parameters.AddWithValue("@OrderingNumber", newOrder);
            command.ExecuteNonQuery();
        }
    }
}

答案 1 :(得分:1)

确保temp [1]实际上是您想要的ID,temp [0]是newOrder id,并且您没有将它们混合起来。