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

时间:2015-01-23 18:05:41

标签: sql vb.net string stringbuilder

我正在使用String Builder创建一个SQL Update查询,如果最后有一个逗号,我需要删除它。

例如:

 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语句后,我想从最后删除一个逗号。

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

最简单的方法是使用每个变量创建一个集合(抱歉,这里是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,它可以轻松地连接一个可枚举的字符串,在每个字符串之间放置一个分隔符(但不在末尾)。

答案 1 :(得分:3)

只需减少StringBuilder的Length属性

query.Length -= 2

但是,请注意您的UPDATE查询。似乎缺少WHERE子句,TableName和SET指令之间需要一个空格 如果您没有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