-7

このコードが機能しないのはなぜですか? foreach に try catch を入れると、正常に動作します。その理由を知る必要があります。助けてください。

try
{
    mySqlConnection = new SqlConnection();
    mySqlConnection.ConnectionString = System.Configuration.ConfigurationManager.AppSettings["connectionstring"].ToString();

    mySqlCommand = new SqlCommand("spSocialGetUniqueWords", mySqlConnection);

    foreach (KeyValuePair<string, int> pair in url)
    {
        mySqlCommand.Parameters.Add(
        new SqlParameter("@uniqueKeyWords", pair.Key));

        mySqlCommand.Parameters.Add(
        new SqlParameter("@counts", pair.Value));

        mySqlCommand.CommandType = CommandType.StoredProcedure;
        mySqlCommand.Connection.Open();
        count = mySqlCommand.ExecuteNonQuery();
        mySqlCommand.Connection.Close();          
    }                
}
catch (Exception ex)
{                
}
4

2 に答える 2

8

それは機能していません。一度実行されていますが、失敗していますが、キャッチしていますがException、何もしていません。コードの問題は、重複するパラメーターを追加していることです。各ループの後にそれらをクリアする必要があります。

foreach (KeyValuePair<string, int> pair in url)
{
    mySqlCommand.Parameters.Clear();

    mySqlCommand.Parameters.Add(
    new SqlParameter("@uniqueKeyWords", pair.Key));

    mySqlCommand.Parameters.Add(
    new SqlParameter("@counts", pair.Value));

    mySqlCommand.CommandType = CommandType.StoredProcedure;
    mySqlCommand.Connection.Open();
    count = mySqlCommand.ExecuteNonQuery();
    mySqlCommand.Connection.Close();          
}
于 2013-08-05T14:00:34.817 に答える