我在stringbuilder中包含了一个插入SQL语句。如果col2变量包含NULL值,我想删除col2的两行。这将允许我在col2
中插入NULL值这是我的代码。
Private Sub insertStmt(ByVal col2 As Integer)
If IsDBNull(col2) Then
'Remove line 'Col2'
End If
Dim sb As StringBuilder = New StringBuilder
sb.Append("INSERT INTO TABLE")
sb.Append("(")
sb.Append("Col1,")
sb.Append("Col2,")
sb.Append("Col3,")
sb.Append("Col4")
sb.Append(")")
sb.Append("VALUES")
sb.Append("(")
sb.Append("1,")
sb.Append(" " & col2 & ", ")
sb.Append("'abc',")
sb.Append("'xyz'")
sb.Append(")")
End Sub
答案 0 :(得分:2)
首先,我强烈同意不建议以这种方式构建SQL的建议
此外,col2
是int
。它永远不会为空
但是要回答你的问题,如果你打算这样做,那么首先不要添加它们会更容易。
假设col2
是可以为空的东西,请用
If Not IsDBNull(col2) Then sb.Append("Col2,")
If Not IsDBNull(col2) Then sb.Append(" " & col2 & ", ")
答案 1 :(得分:0)
为什么不在创建stringbuilder之前执行此操作
例如:
Dim values As New Dictionary(Of String, object)
values.Add("col1", variable1)
values.Add("col2", variable2)
values.Add("col3", variable3)
Dim main_sb As New StringBuilder
Dim cols_sb As New StringBuilder
Dim vals_sb As New StringBuilder
For Each row As KeyValuePair(Of String, object) In values
If IsDBNull(row.Value) = False Then
cols_sb.Append("[" & row.Key & "],")
vals_sb.Append("'" & row.Value & "',")
End If
Next
main_sb.Append("INSERT INTO TABLE (" & cols_sb.ToString.Substring(0, cols_sb.ToString.Length - 1) & ") values (" & vals_sb.ToString.Substring(0, vals_sb.ToString.Length - 1) & ")")
答案 2 :(得分:0)
检查出来:
sb.AppendFormat("INSERT INTO TABLE(Col1,Col2,Col3,Col4) VALUES(1,{0},'abc','xyz')", col2);
整洁呃?