0

我试图循环一些数组,并通过它,用新参数更新..

这是我的代码:

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

问题是,我没有得到任何异常,但由于某种原因,数据库没有受到影响..

知道为什么吗?

4

2 回答 2

3

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

更改wholeArr.Length - 1wholeArr.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 转到下一行。检查快速观察窗口中的值。

除此之外,您应该始终处置任何IDisposableusing-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();
        }
    }
}
于 2012-08-29T07:52:15.270 回答
1

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

于 2012-08-29T08:27:09.557 回答