在ASP.net中使用VariantType

时间:2012-06-16 03:25:09

标签: asp.net vb.net variant

希望在这里快速回答。

好的,因为我从数据库中进行了很多单值查找,所以我创建了一个函数来处理查找。它旨在获取任何类型的数据类型(字符串,整数,日期......)。

当我想要检索一个数字时它会起作用,但是当我需要一个字符串时会给我一个错误(InvalidCastException尝试将字符串转换为该行上的整数:GetValue = DR(0))。 我无法进行ctype或直播,因为数据类型未知且不同。 尚未测试任何其他数据类型。

代码如下。我想知道如何使这个功能起作用,或者指出另一个能起到同样作用的功能。

Public Shared Function GetValue(Optional ByVal SQL As String = "", Optional ByVal FieldName As String = "", Optional ByVal TableName As String = "", Optional ByVal WhereClause As String = "") As VariantType?
    Dim myConnection As SqlConnection
    Dim myCommand As SqlCommand
    Dim strSQL As New SQLStringBuilder
    Dim DR As SqlDataReader

    myConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("ConnAFRAMSSQL").ConnectionString)
    strSQL.Add(SQL)
    If FieldName > "" Then
        strSQL.Add("SELECT " & FieldName)
    End If
    If TableName > "" Then
        strSQL.Add("FROM " & TableName)
    End If
    If WhereClause > "" Then
        strSQL.Add("WHERE " & WhereClause)
    End If
    myConnection.Open()
    myCommand = New SqlCommand(strSQL.ToString, myConnection)
    DR = myCommand.ExecuteReader()
    If DR.HasRows Then
        DR.Read()
        GetValue = DR(0)
    Else
        GetValue = Nothing
    End If
End Function

感谢。

1 个答案:

答案 0 :(得分:2)

您可以指定System.ObjectSystem.Object是所有类型的最终基类)方法的返回类型。

Public Shared Function GetValue(Optional ByVal SQL As String = "", Optional ByVal FieldName As String = "", Optional ByVal TableName As String = "", Optional ByVal WhereClause As String = "") As Object
    Dim myConnection As SqlConnection
    ....
   Dim obj as Object=Nothing
   If DR.Read()
        obj=DR(0)
   End If
   DR.Close()
   myConnection.Close()
   return obj
End Function