c# - SQL在C#中的表中允许null

标签 c# sql sql-server-2008

使用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不必具有值,因此我需要它允许空值。我确保表允许空值。在我的C#代码中,我确保使用可为空的int,但是在运行代码时出现错误:


  引发的异常:“过程或函数'updateMain'期望提供参数'@Pareto',但未提供。” (System.Data.SqlClient.SqlException)
  引发了System.Data.SqlClient.SqlException:“过程或函数'updateMain'期望提供参数'@Pareto',但未提供。”


那么,如何停止该错误并将null放入表中?

最佳答案

使用

InfoCommand.Parameters.AddWithValue("@Pareto", (Object)pareto ?? DBNull.Value);

关于c# - SQL在C#中的表中允许null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16015056/

相关文章:

c# - 将错误添加到 ModelState

c# - 为什么我收到错误 Could not load type 'SlipUpdate' ?

sql - 创建连接多个表的数据库 View

sql-server-2008 - "neater"节假日计算方式

c# - 在 Unity3d 中导入数学时出错

sql - 需要一个 .NET 数据库版本控制脚本运行器

mysql - 不确定如何使用两个表的 mySQL 查询来解决这个问题

SQL Server 选择总和的最大值

sql-server - 在其他数据库中重新设定标识列(不在当前正在使用的数据库中)

c# - 在 C# 中使用 Selenium 时出现 "no such element"异常