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 を取得するにはどうすればよいでしょうか?