删除 StringBuilder SQL 查询中的最后一个逗号

Remove last comma in StringBuilder SQL Query

我正在使用 String Builder 创建 SQL 更新查询,如果末尾有逗号,我需要将其删除。

例如:

 Dim query As New StringBuilder
 query.AppendLine("Update Vendor")
 If Not String.IsNullOrEmpty(vendInfo.Name) Then
      query.AppendLine("Set VendorName= @VendorName, ")
 End If
 If Not String.IsNullOrEmpty(vendInfo.VendorType) Then
      query.AppendLine("VendorType= @VendorType, ")
 End If

最后一项的查询错误,因为总是有一个逗号。完成所有 If 语句后,我想从末尾删除一个逗号。

有什么想法吗?

只需减少 StringBuilder

的长度 属性
query.Length -= 2

但是,请注意您的 UPDATE 查询。 WHERE 子句似乎缺失,TableName 和 SET 指令之间需要一个 space。
如果您没有 Vendinfo.Name,也会出现另一个问题。您排除了插入 SET 的代码,但这对于更新的第一个字段是必需的

 Dim query As New StringBuilder
 query.AppendLine("Update Vendor SET ")
 If Not String.IsNullOrEmpty(vendInfo.Name) Then
      query.AppendLine("VendorName= @VendorName, ")
 End If
 If Not String.IsNullOrEmpty(vendInfo.VendorType) Then
      query.AppendLine("VendorType= @VendorType, ")
 End If

 If query.Length > 18 Then
    ' 18 chars are fixed in UPDATE Vendor SET'
    query.Length -= 2
    ' add the WHERE clause'
    ......
 End If

最简单的方法是用每个变量创建一个集合(抱歉,这里是 C#)

var list = new List<string>();
// add your vars
if(!string.IsNullOrEmpty(vendInfo.Name))
      list.Add("Set VendorName= @VendorName");
// and join them
var vars = string.Join(", ", list);

秘诀是 String.Join,它可以轻松连接可枚举的字符串,在每个字符串之间(但不是末尾)放置一个分隔符。