我在SQL Server中有一个表,其中有一个名为sql_DateTime
的{{1}}类型的列。我还有一个C#结构,映射到该表中的单个记录;在此结构中是名为datetime
的成员m_DateTime
。
我使用DateTime
从此表中检索记录后出现问题,然后尝试将DataSet
中的sql_DateTime
转换为Dataset
变量。当我尝试执行类似于处理其他数据类型的方式时,我得到m_DateTime
。
我希望能够在我的GUI中使用InvalidCastException
来显示和设置日期和时间。
附上我的代码供您参考。感谢您提供任何指导。
DateTimePicker
答案 0 :(得分:0)
你说:
我在SQL Server中有一个表,其中有一个名为sql_DateTime
的列
然而你使用:
exp.m_DateTime = (DateTime)dsExperiments.Tables["Experiment"]
.Rows[0]["DateTime"];
注意名称。我很惊讶你遇到了铸造问题。是否有可能实际上你的名字是正确的,但你的行不包含值,所以你试图将DBNull.Value
投射到DateTime
?
另外,我会说:
exp
答案 1 :(得分:0)
您使用的是数据绑定吗?如果是这样,你是否绑定了适当的财产? SQL是一个可以为空的类型吗?
答案 2 :(得分:0)
试试这个:
exp.m_DateTime = DateTime.Parse(dsExperiments.Tables["Experiment"].Rows[0]["DateTime"].ToString());
答案 3 :(得分:0)
问题可能是包含数据(Tables["Experiment"]
)的DataTable认为列["DateTime"]
的类型不是DateTime而是字符串。
我认为你有其他选择:
如果您确定它始终是DateTime,只需解析它:
exp.m_DateTime =DateTime.Parse(dsExperiments.Tables["Experiment"].Rows[0]["DateTime"].ToString());
在尝试阅读之前设置dsExperiments.Tables["Experiment"].Columns["DateTime"].DataType=typeof(DateTime);
。