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()