【问题标题】:DBNull error - 'System.InvalidCastException'DBNull 错误 - 'System.InvalidCastException'
【发布时间】:2013-12-10 10:10:45
【问题描述】:

使用 Visual Studio 2008 并使用 VB.net 为 Web 应用程序生成 .net 2.0 框架。

我目前遇到了一个很奇怪的问题。在我构建解决方案并单击网页中的链接后,我收到如下错误消息。当我尝试在调试模式下运行时发生了同样的事情。

*************************************** ERROR Message ******************************************************
"An exception of type 'System.InvalidCastException' occurred in Microsoft.VisualBasic.dll but was not handled in user code"
"Additional information: Operator '=' is not defined for type 'DBNull' and string "". "
*******************************************************************************************************************

问题部分在vb文件中如下所示。 dataview(0)(“name”) 的值为 NULL,my_name 是一个变量字符串。奇怪的是我没有更改这个 vb 文件中的任何代码。这个vb文件是以前建好的,很久以前用过,没有任何问题。只是今天突然发生了。我在整个程序中都有这种语法而不会引起任何问题。我已尝试将整个解决方案恢复为原始解决方案,但仍然存在问题。

谁能告诉我为什么突然以及如何解决?

If dataview(0)(“name”) = my_name then …

【问题讨论】:

  • 因为突然之间,name 列中有 NULL 值。如果以前从未发生过这种情况,那么有人更改了数据库以允许在该列中插入 NULL 值。 (或者该网站从未经过仔细测试)
  • 感谢您的建议。实际上,名称列很久以前就有 NULL 值,我正在运行 SQL 2000,我已经将表列属性设置为“允许 null”。我需要更改 Visual Studion 2008 中的哪些地方?生无可恋。请帮忙。谢谢。

标签: vb.net visual-studio-2008 web-applications .net-2.0


【解决方案1】:

先尝试确定NULL值..

If NOT IsDBNull(dataview(0)(“name”)) Then 
  If dataview(0)(“name”) = my_name then

    'codes here    

  End If
End If

【讨论】:

  • 实际上,我在整个程序中都有提到的问题语法,他们以前没有问题。如果我一个一个地改变它,那将需要永远。这可能与 Visual Studio 2008 或 microsoft.visualbasic.dll 库有关吗?还是谢谢。
  • 可能在您的文件操作中发生了一些意外,导致您的数据库字段中出现了 NULL 值......所以您可以在数据库中手动修复它
  • 实际上,该字段已经允许为空,并且在事件发生之前它确实具有空值并且之前工作过。奇怪的。还是谢谢。
猜你喜欢
  • 1970-01-01
  • 2014-04-27
  • 2022-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多