Sql server 在VB.Net中动态更新SQL Server数据库

Sql server 在VB.Net中动态更新SQL Server数据库,sql-server,vb.net,Sql Server,Vb.net,我正在尝试使用Bookings表单中的textbox值动态生成查询,以仅更新用户输入的那些值 我正在使用以下代码: Dim str As String str = "UPDATE Bookings SET " Dim first As Integer = 1 For Each x As Control In Me.Controls If x.GetType Is GetType(TextBox) Then If first = 1 Then fi

我正在尝试使用Bookings表单中的textbox值动态生成查询,以仅更新用户输入的那些值

我正在使用以下代码:

Dim str As String

str = "UPDATE Bookings SET "
Dim first As Integer = 1
For Each x As Control In Me.Controls
    If x.GetType Is GetType(TextBox) Then
        If first = 1 Then
            first = 2
        Else
            str &= ","
        End If
        If x.Tag = 1 Then
            str = str & x.Name & " = @" & x.Name
        End If
    End If
Next
但它生成的查询如下所示:

Update Bookings SET ,,booking_date = @booking_date,,,,,cust_name = @cust_name where bookingID = @bookingID
或者,如果我只想更新1个字段,它会生成以下内容:

Update Bookings SET ,,,,,,,cust_name = @cust_name where bookingID = @bookingID
这是一个简单的答案

Dim str = "UPDATE Bookings SET " & String.Join(",", (From _E In Controls.OfType(Of Control)() Where _E.GetType() Is GetType(TextBox) AndAlso _E.Tag = "1" Select _E.Name).ToList())
这是一个简单的答案

Dim str = "UPDATE Bookings SET " & String.Join(",", (From _E In Controls.OfType(Of Control)() Where _E.GetType() Is GetType(TextBox) AndAlso _E.Tag = "1" Select _E.Name).ToList())

我有两个屏蔽文本框1为客户id,其屏蔽为“csc-”,即csc之后需要四个整数值,另一个为联系人,其屏蔽为“-”也就是说,“-”之前需要四个整数值,“-”之后需要七个整数值……但这两个文本框都没有得到验证,我在验证事件中输入了.tag=1,我也在textchanged事件中尝试了它,但没有用,如果在这两个文本框中输入了某个值,则不会更改这些文本框的查询……请建议对此进行补救我有两个屏蔽文本框1为客户id,其屏蔽为“csc-”,即csc-之后需要四个整数值,另一个为联系人,其屏蔽为“-”也就是说,“-”之前需要四个整数值,“-”之后需要七个整数值……但这两个文本框都没有得到验证,我在验证事件中输入了.tag=1,我也在textchanged事件中尝试了它,但没有用,如果在这两个文本框中输入了某个值,则不会更改这些文本框的查询……请建议对此进行补救,我知道这根本不回答你的问题,但是如果这个代码是为了生产使用的话,请考虑使用Sql命令和Sql参数。像这样生成SQL是一个巨大的安全缺陷:)我已经使用了SQLCOMPUTE和SQL参数,而这个代码只是在运行时生成一个查询,它的文本框有一个VeruEi知道,这根本不回答您的问题,但是如果这个代码是用于生产使用的话,请考虑使用SQLCu命令和SQLPosits。生成这样的SQL是一个巨大的安全缺陷:)我使用了sqlcommand和SQL参数,这段代码只是在运行时为具有值的文本框生成查询