【问题标题】:Check if variable can be cast against a dynamic datatype检查是否可以针对动态数据类型强制转换变量
【发布时间】:2013-08-01 01:10:35
【问题描述】:

我正在 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

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

【问题讨论】:

标签: sql .net vb.net types datatable


【解决方案1】:

不要认为有办法自动为任何类型执行此操作,但根据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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-20
    • 2013-05-29
    • 2011-10-25
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多