Sql 检查是否可以对动态数据类型强制转换变量

Sql 检查是否可以对动态数据类型强制转换变量,sql,.net,vb.net,types,datatable,Sql,.net,Vb.net,Types,Datatable,我正在VB.NET中为SQL Server 2008数据库创建一个导入应用程序。我试图使导入尽可能通用,以减少将来的维护。因此,它可以从表的预设列表中获取所有可用列,这些列可以导入到其中 主要的问题是,现在我已经到了做错误捕获的地步。我目前正在尝试检查正在导入的值是否可以转换为数据库中字段的数据类型。例如,如果您想将一个日期导入数据库,但是您错误地将一个地址字段放在了数据库中,那么我想将其提取出来并通知用户 因此,我有一个VB datatable,它与数据库表具有相同的模式,并且有一个我想进入d

我正在VB.NET中为SQL Server 2008数据库创建一个导入应用程序。我试图使导入尽可能通用,以减少将来的维护。因此,它可以从表的预设列表中获取所有可用列,这些列可以导入到其中

主要的问题是,现在我已经到了做错误捕获的地步。我目前正在尝试检查正在导入的值是否可以转换为数据库中字段的数据类型。例如,如果您想将一个日期导入数据库,但是您错误地将一个地址字段放在了数据库中,那么我想将其提取出来并通知用户

因此,我有一个VB datatable,它与数据库表具有相同的模式,并且有一个我想进入datatable的值。以下是我已经拥有的(不多):


我已经做了一些关于反射的研究,但它仍然需要我定义数据类型。有没有其他方法可以做到这一点?

我认为没有一种方法可以对任何类型自动做到这一点,但根据统计,有18种类型是受支持的,应该是可管理的

Private Sub SetValue(TargetDataTable As DataTable, ColumnName As String, Value As String)

    Dim DBType As Type = TargetDataTable.Columns(ColumnName).DataType

    Dim valueint As Integer
    Dim valuebln As Boolean

    If DBType Is GetType(Integer) AndAlso Integer.TryParse(Value, valueint) = False Then
        'Has error
    End If

    If DBType Is GetType(Boolean) AndAlso Boolean.TryParse(Value, valuebln) = False Then
        'Has error
    End If

    '...

End Sub

未测试,但您可以尝试使用,也可以尝试使用。
Private Sub SetValue(TargetDataTable As DataTable, ColumnName As String, Value As String)

    Dim DBType As Type = TargetDataTable.Columns(ColumnName).DataType

    Dim valueint As Integer
    Dim valuebln As Boolean

    If DBType Is GetType(Integer) AndAlso Integer.TryParse(Value, valueint) = False Then
        'Has error
    End If

    If DBType Is GetType(Boolean) AndAlso Boolean.TryParse(Value, valuebln) = False Then
        'Has error
    End If

    '...

End Sub