我有一个 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是预期的,但未提供。
答案 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);