0

SQL Server データベースにクエリを実行し、返された結果に基づいて挿入ステートメントを生成できる VB.net アプリケーションを構築しています。コンボボックスからデータ型をチェックし、データ型に応じてフォーマットする case ステートメントがあります。私が抱えている次の問題と私が求めているのは、日付を整数から16進値に変換して、16進値をSQLサーバーの日時データ型にキャストできるかどうかです。私のコードがあまりにも初心者ではないことを願っています。

For Each dr As DataRow In dt.Rows
        x = 0
        Dim splitout = Split(TextBox1.Text, " ")
        builder.Append("INSERT INTO " & splitout(3).ToUpper & " (")
        Do Until x = DataGridView1.Columns.Count
            builder.Append(DataGridView1.Columns(x).HeaderText.ToString)
            If x = DataGridView1.Columns.Count - 1 Then
                builder.Append("")
            Else
                builder.Append(",")
            End If
            x = x + 1
        Loop
        builder.Append(") VALUES (")
        For Each dc As DataColumn In dt.Columns
            Do Until y = dt.Columns.Count
                Select Case ComboBox1.Items(y).ToString
                    Case "char"
                        builder.Append("'" & LTrim(RTrim(dr(y))) & "'")
                    Case "smalldatetime"
                        If dr(y) Is DBNull.Value Then
                            builder.Append("NULL")
                        Else
                            Dim hexbuilder As New StringBuilder
                            Dim var2INT As Integer
                            var2INT = CInt(dr(y))
                            For x = 0 To var2INT.ToString.Length - 1
                                hexbuilder.Append(Conversion.Hex(var2INT.ToString.Substring(x, 1)))
                            Next x
                            builder.Append("CAST(" & hexbuilder.ToString & " as smalldatetime)")
                        End If
                    Case "numeric"
                        builder.Append(dr(y))
                    Case "bit"
                        builder.Append("CAST('" & dr(y) & "' as BIT)")
                    Case "uniqueidentifier"
                        If dr(y) Is DBNull.Value Then
                            builder.Append("NULL")
                        Else
                            builder.Append("N'")
                            builder.Append(dr(y))
                            builder.Append("'")
                        End If
                    Case "varchar"
                        builder.Append("'" & LTrim(RTrim(dr(y))) & "'")
                End Select
                If y = dt.Columns.Count - 1 Then

                Else
                    builder.Append(",")
                End If

                y = y + 1
            Loop
        Next
        builder.Append(")")
        builder.AppendLine()
        y = 0
    Next
    ds.Dispose()
    Con.Close()
4

1 に答える 1