注册 登录
编程论坛 ASP.NET技术论坛

应用程序中的服务器错误。从类型“DBNull”到类型“String”的强制转换无效。

yulphoenix 发布于 2006-09-27 08:53, 2336 次点击

这是我访做的一个留言版,不知道下面这个问题怎么解决,请大家帮帮忙:急啊!
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.InvalidCastException: 从类型“DBNull”到类型“String”的强制转换无效。

源错误:


行 56: Dim hobby = "兴趣:" & server.htmlencode(row.item("兴趣"))
行 57: Dim cla = "学历:" & server.htmlencode(row.item("学历"))
行 58: Dim time = "时间:?" & server.htmlencode(row.item("时间"))
行 59: Dim email = server.htmlencode(row.item("电子邮件"))
行 60: email = "电子邮件:<a href='mailto:" & email & "'>" & email & "</a>"

源文件: C:\Inetpub\wwwroot\ComputerTest\hw07-1.aspx.vb 行: 58

堆栈跟踪:


[InvalidCastException: 从类型“DBNull”到类型“String”的强制转换无效。]
Microsoft.VisualBasic.CompilerServices.StringType.FromObject(Object Value)
ComputerTest.hw07_1.temp(DataRow row) in C:\Inetpub\wwwroot\ComputerTest\hw07-1.aspx.vb:58
ComputerTest.hw07_1.Page_Load(Object sender, EventArgs e) in C:\Inetpub\wwwroot\ComputerTest\hw07-1.aspx.vb:46
System.Web.UI.Control.OnLoad(EventArgs e)
System.Web.UI.Control.LoadRecursive()
System.Web.UI.Page.ProcessRequestMain()


2 回复
#2
yulphoenix2006-09-27 13:50
我自己找个错误了,我数据库里面的时间字段不是时间日期型,改过来就一切OK拉!
#3
deversion2008-10-31 13:11
解决方法
的应用开发中,常常要与数据库或数据集打交道,自从NULL的进入,字符串与运算符的关系也将全三角的状态。。。
 
当字段中出现NULL时,直接运算会出现类似以下字符的异常:
运算符对   类型“DBNull”   和   字符串“   ”   无效。  
 
 如:Dim strID As String = _Online.Tables(0).Rows(0).Item("UID")将抛出“从类型“DBNull”到类型“String”的强制转换无效。”的异常。
 
此时,你可能想,在转换之前进行一下NULL检测,使用如下语句。
Dim strID As String
if  not isdbnull(_Online.Tables(0).Rows(0).Item("UID"))  then strID = _Online.Tables(0).Rows(0).Item("UID")
 
可见程序代码又多了不少内容。那么有没有一个更好的方法减少程序代码呢?
 
答案是:有,使用Tostring方法。
Dim strID As String = _Online.Tables(0).Rows(0).Item("UID").ToString
此时,系统不会抛出任何异常,而不论字段内容是不是NULL。
 
顺便说一下,.ToString方法并不公开,在VS设计器中该方法没有自动列出,需要手动输入以上代码。
1