2011-09-19 3 views
1

Я пытаюсь динамически генерировать запрос с использованием значений текстового поля из формы «Мои заказы», ​​чтобы обновлять только те значения, которые были введены пользователем.Обновление базы данных SQL Server динамически в VB.Net

Я использую следующий код:

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 
+1

Я знаю, что это не отвечает на ваш вопрос вообще, но, пожалуйста, подумайте об использовании SQLCommand и SQLParameters, если этот код предназначен для использования в производстве. Генерация SQL - вот массивный недостаток безопасности :) –

+0

Я использовал sqlcommand и sql-параметры, и этот код просто для генерации запроса во время выполнения для текстовых полей, имеющих значение –

ответ

1
Dim str As String 
str = "UPDATE Bookings SET " 
Dim comma As string = "" 
For Each x As Control In Me.Controls 
    If x.GetType Is GetType(TextBox) Then 
    If x.Tag = 1 Then 
     str &= comma & x.Name & " = @" & x.Name 
     comma = "," 
    End If 
    End If 
Next 

И вот e Один ответ.

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()) 
+0

У меня есть 2 маскированных текстовых поля 1 - cust_id и его маска «csc», то есть четыре целочисленных значения требуются после csc-, а другой - контакт, маска которого «-», т.е. требуется четыре целочисленных значения до «-» и требуется 7 целых значений после «-....» .. Но оба этих текстовых поля не проверяются, и я положил .tag = 1 в проверенное событие, и я также попробовал его при событии textchanged, но бесполезен, и запрос не изменился для них, если какое-то значение введено в эти 2 текстовых поля. ..Пожалуйста, предложите средство для этого –

Смежные вопросы