从类型“DBNull”到类型“String”的强制转换无效
这是经常会遇到的问题了,有人建议如下:
If Not ds.Tables("file").Rows(0).Item(5).GetType Is System.DBNull.Value.GetType Then
但如果每个字段都进行这样的判断,有点太麻烦了
有人建议直接在select语句中搞掂:select name,isnull(memo,'') as memo from xxx
最后觉得比较好的办法是:
你直接ToString()掉就行了。
TextBox1.Text = ds.Tables(0).Rows(rowNum).Item("E_EDate").ToString();
提示你强制转换无效,你就给它直接转换吧。
请问:当参数为日期型时,日期为空时,怎么给参数赋值!才能将Null日期写入数据库中!!
谢谢!!
--------------
re1:
对于任何类型的NULL字段都是:
DBNull.Value;
---------------
re2:
楼上的就可以,也可以你用datetime.minvalue代替。
---------------
re3:
非常感谢!
to eboywy(飞影) :
用DBNull.value解决了存入数据库的问题,但当从dataset中读取数据至textbox时,如果直接写TextBox1.Text = ds.Tables(0).Rows(rowNum).Item("E_EDate"),会提示出错“从类型“DBNull”到类型“string”的强制转换无效。”还要进行一下判断:
If ds.Tables(0).Rows(rowNum).Item("E_EDate") Is DBNull.Value Then
Else
med_EDate.CtlText = .Item("E_EDate") & ""
End If
请问,有没有更简单的方法!如果每个字段都进行这样的判断,有点太麻烦了
to zhanqiangz(闲云野鹤):
你的赋值方法会出错:“未处理的“System.Reflection.TargetInvocationException”类型的异常出现在 mscorlib.dll 中。
其他信息: 调用的目标发生了异常。”,请问知不知道这个错误是什么意思?
谢谢
---------------
re4:
你直接ToString()掉就行了。
TextBox1.Text = ds.Tables(0).Rows(rowNum).Item("E_EDate").ToString();
提示你强制转换无效,你就给它直接转换吧。