1

SQL Server 2008、WinForms C# .NET 4.5、Visual Studio 2012 を使用。

からの情報でテーブルを現在更新するクエリがありますGridView

以下は、ストアド プロシージャを呼び出すコードです。

public void UpdateMain(string part, int? pareto)
{
  try
  {
    using (SqlConnection AutoConn = new SqlConnection(conn32))
    {
      AutoConn.Open();
      using (SqlCommand InfoCommand = new SqlCommand())
      {
        using (SqlDataAdapter infoAdapter = new SqlDataAdapter(InfoCommand))
        {
          InfoCommand.Connection = AutoConn;
          InfoCommand.CommandType = CommandType.StoredProcedure;
          InfoCommand.CommandText = "dbo.updateMain";
          InfoCommand.Parameters.AddWithValue("@part", part);
          InfoCommand.Parameters.AddWithValue("@pareto", pareto);
          InfoCommand.CommandTimeout = 180;

          InfoCommand.ExecuteNonQuery();
        }
      }
    }
  }
  catch (Exception e)
  {
    //MessageBox.Show("Error in connection :: " + e);
  }
}

そして、ここにSQLがあります:

ALTER PROCEDURE [dbo].[updateMain]
    @part varchar(255),
    @Pareto int
as
    UPDATE dbo.ParetoMain 
    SET NewPareto = @Pareto 
    WHERE Part = @part

ご覧のとおり、派手なものはありません。私が抱えている問題はNewpareto、値を持つ必要がないため、null を許可する必要があることです。テーブルがヌルを許可することを確認しました。私の C# コードでは、nullable int を使用するようにしましたが、コードを実行するとエラーが発生します。

Exception:Thrown: 「プロシージャーまたは関数 'updateMain' は、指定されていないパラメーター '@Pareto' を予期しています。」(System.Data.SqlClient.SqlException)
System.Data.SqlClient.SqlException がスローされました: 「プロシージャまたは関数 'updateMain' は、指定されていないパラメーター '@Pareto' を予期しています。」

では、このエラーを停止してテーブルに null を取得するにはどうすればよいでしょうか?

4

3 に答える 3