SqlParameter:插入具有空浮点值的行

时间:2018-08-01 15:34:37

标签: c# sqlcommand

我有一个 float?对象列表。

List<float?> myList = new List<float?>{1,null,3};

我正在尝试将此对象插入表格中。

using (SqlCommand oCommand = myConnection.CreateCommand())
{
    oCommand.CommandType = CommandType.Text;
    oCommand.CommandText = "INSERT INTO myTable (col1) values(@col1)";

    foreach (var oData in myList)
    {
        oCommand.Parameters.Clear();
        oCommand.Parameters.Add((oData == null) ? new SqlParameter("@col1", DBNull.Value) : new SqlParameter("@col1", SqlDbType.Float));
        oCommand.Parameters[oCommand.Parameters.Count - 1].Value = oData;

        if (oCommand.ExecuteNonQuery() != 1)
        {
            throw new InvalidProgramException();
        }
    }
    myConnection.Close();
}

当我运行这段代码时,我有一个异常,它表示参数@ col1是预期的,但未提供。

2 个答案:

答案 0 :(得分:2)

oCommand.Parameters.Add(new SqlParameter("@col1", SqlDbType.Float) { Value = oData == null ? DBNull.Value : (object) oData.Value });` 

删除下面的行,该行将重置您先前设置的Value属性。

答案 1 :(得分:1)

尝试这样

   if(oData.HasValue)
     oCommand.Parameters.AddWithValue("@col1", oData.Value);
   else
     oCommand.Parameters.AddWithValue("@col1", DBNull.Value);