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

問題は、私は例外を受け取っていませんが、何らかの理由でDBは影響を受けません..

なぜですか?

4

2 に答える 2

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

項目が 1 つしかなかったため、メソッド 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();
        }
    }
}
于 2012-08-29T07:52:15.270 に答える
1

temp[1] が実際に必要な ID であり、temp[0] が newOrder ID であり、それらを混同していないことを確認してください。

于 2012-08-29T08:27:09.557 に答える