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

时间:2013-07-31 13:20:20

标签: sql .net vb.net types datatable

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

主要问题是现在我已经到了我正在进行错误捕获的地步。我目前正在尝试检查要导入的值是否可以作为数据库中字段的数据类型进行转换。例如,如果您想将日期导入数据库但是您错误地输入了地址字段,我想选择这个并提醒用户。

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

    Private Sub SetValue(TargetDataTable As DataTable, ColumnName as String, Value as string)
       Dim DBType as Type = TargetDataTable.Columns(ColumnName).Datatype

       ????
    End Sub

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

1 个答案:

答案 0 :(得分:0)

不要认为有一种方法可以自动为任何类型执行此操作,但根据MSDN,支持的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