StringBuilder删除行

时间:2016-04-23 16:43:50

标签: sql vb.net stringbuilder

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

3 个答案:

答案 0 :(得分:2)

首先,我强烈同意不建议以这种方式构建SQL的建议 此外,col2int。它永远不会为空 但是要回答你的问题,如果你打算这样做,那么首先不要添加它们会更容易。

假设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);

整洁呃?