指定的强制转换在vb.net中无效

时间:2014-10-13 14:30:34

标签: vb.net casting

将整数变量分配给从有时可能包含NULL的SQL存储过程返回的值时出现此错误。

   System.InvalidCastException: Specified cast is not valid. 

代码段:

   Dim iUserId As Nullable(Of Integer)

  ' Get the UserId associated to the server.
  .CommandType = Data.CommandType.StoredProcedure
  .CommandText = "SelectUserIdByServerId"
  .Parameters.Clear()
  .Parameters.AddWithValue("@ServerId", Request("serverid"))

  ' Returns back 1 column.
  iUserId = .ExecuteScalar()

我虽然如果我有:Dim iUserId As Nullable(Of Integer),它应该没有问题。

1 个答案:

答案 0 :(得分:3)

ExecuteScalar()会返回ObjectintegerDbNull。 所以你需要这样写:

Dim tmp As Object = .ExecuteScalar()
iUserId = if(Convert.IsDbNull(tmp), new integer?(), directcast(tmp, integer))