0

SQL Server 2008 データベースのインポート アプリケーションを VB.NET で作成しています。将来のメンテナンスを減らすために、インポートを可能な限り汎用的にしようとしています。したがって、インポートできるテーブルの事前設定リストから使用可能なすべての列を取得します。

主な問題は、エラー トラップを実行するところまで来てしまったことです。現在、インポートされている値がデータベース内のフィールドのデータ型としてキャスト可能かどうかを確認しようとしています。たとえば、日付をデータベースにインポートしたいが、誤って住所フィールドを入力してしまった場合、これをピックアップしてユーザーに警告したいと考えています。

そのため、データベース テーブルと同じスキーマを持つ VB データテーブルと、データテーブルに入れたい値があります。以下は私がすでに持っているものです(それほど多くはありません):

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

       ????
    End Sub

リフレクションについていくつか調査しましたが、それでもデータ型を定義する必要があります。これを行う他の方法はありますか?

4

1 に答える 1

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
于 2013-08-01T03:05:27.693 に答える