gpt4 book ai didi

asp.net - 删除 SQL 更新中 WHERE 之前的最后一个逗号

转载 作者:行者123 更新时间:2023-12-01 08:39:06 26 4
gpt4 key购买 nike

我正在从“SET Column = @param,”字符串中手动构建 SQL UPDATE 语句。我遇到的问题是 WHERE 之前的最后一个 SET 语句不应包含逗号,因为这是语法错误。

所以我的代码是这样的:

Public Sub Update(byval id as Integer, Optional byval col1 as String = Nothing, Optional byval col2 as Integer = -1)

Dim sqlupdateid As SqlParameter
Dim sqlupdatecol1 As SqlParameter
Dim sqlupdatecol2 As SqlParameter

Using sqlupdate As SqlCommand = _connection.CreateCommand()
sqlupdate.CommandType = CommandType.Text
Dim updatedelim As String = ","
Dim setcol1 As String = "SET Col1 = @col1"
Dim setcol2 As String = "SET Col2 = @col2"

sqlupdate.CommandText = "UPDATE dbo.MyTable"

If Not IsNothing(col1) Then
sqlupdate.CommandText += " "
sqlupdate.CommandText += setcol1
sqlupdate.CommandText += updatedelim

sqlupdatecol1 = sqlupdate.CreateParameter()
sqlupdatecol1.ParameterName = "@col1"
sqlupdatecol1.DbType = SqlDbType.VarCHar
sqlupdatecol1.Value = col1
sqlupdate.Parameters.Add(sqlupdatecol1)
End If
If Not col2 = -1 Then
sqlupdate.CommandText += " "
sqlupdate.CommandText += setcol2
sqlupdate.CommandText += updatedelim

sqlupdatecol2 = sqlupdate.CreateParameter()
sqlupdatecol2.ParameterName = "@col2"
sqlupdatecol2.DbType = SqlDbType.Int
sqlupdatecol2.Value = col2
sqlupdate.Parameters.Add(sqlupdatecol2)
End If

sqlupdate.CommandText += " WHERE ID = @id"
//try to remove the last comma before the WHERE... (doesn't work)
Dim temp As String = sqlupdate.CommandText
Dim space As Char = " "
Dim list As String() = temp.Split(space)
Dim last As String = String.Empty
Dim removed As String = String.Empty
For Each s As String In list
If s.Contains("WHERE") Then
If last.Contains(",") Then
removed = last.TrimEnd(",")
End If
End If
last = s
Next

Dim cmd As String = list.ToString()
sqlupdate.CommandText = cmd
sqlupdateid = sqlupdate.CreateParameter()
sqlupdateid.ParameterName = "@id"
sqlupdateid.DbType = SqlDbType.Int
sqlupdateid.Value = id
sqlupdate.Parameters.Add(sqlupdateid)

sqlupdate.ExecuteNonQuery()
End Using
End Sub

任何人都可以提出更好的算法来删除 SQL 语句中 WHERE 之前的最后一个逗号,记住它之前的 SET 语句的数量会有所不同吗?

因为我在每组后添加一个逗号,因为另一个可以跟或不跟,所以我必须在建立 UPDATE 后,找到最后一个逗号并将其删除。

所以它应该是这样的:
UPDATE dbo.MyTable SET Col1 = @col1, SET Col2 = @col2 WHERE id = @id

最佳答案

动态创建 UPDATE查询(没有 WHERE 子句)。

然后做if (q.EndsWith(",")) then q = q.Substr(0,q.Length-1) .

最后追加到 q WHERE条款。

关于asp.net - 删除 SQL 更新中 WHERE 之前的最后一个逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6121798/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com