Member 11856456 Ответов: 1

Что мне не хватает для завершения этого оператора stringbuilder?


Итак, я пытаюсь сделать оператор update с помощью string builder для имени, фамилии и отчества. проблема, с которой я сталкиваюсь, заключается в том, что она не включает запятую для значений и столбцов. Чего мне не хватает, чтобы завершить это утверждение и заставить его работать должным образом?

 Using sqlconn As New SqlConnection("SQLstatement")
            Using da As New SqlDataAdapter(String.Empty, sqlconn)
                Dim sql As New StringBuilder("insert into [")
                sql.Append(Form1.TreeView1.SelectedNode.Text.Replace("]", "\]"))
                sql.Append("] ( ")

                Dim sbOn As New StringBuilder(") values( ")
                Dim andRequired As Boolean = False

                If Not String.IsNullOrEmpty(First_NameTextBox.Text) Then
                    sql.Append(" [First_name]")
                    sbOn.Append("@Firstname")
                    If andRequired Then
                        sbOn.Append(", ")
                    End If
                    da.SelectCommand.Parameters.AddWithValue("@Firstname", 
                    First_NameTextBox.Text)
                End If

                    If Not String.IsNullOrEmpty(Last_NameTextBox.Text) Then
                    sql.Append(" [Last_name]")
                    sbOn.Append("@Lastname")
                    If andRequired Then
                        sbOn.Append(", ")
                    End If
                    da.SelectCommand.Parameters.AddWithValue("@Lastname", 
                    Last_NameTextBox.Text)
                End If


                If Not String.IsNullOrEmpty(Middlenametextbox.Text) Then
                    sql.Append(" [Middle_name]")
                    sbOn.Append("@Middlename")
                    If andRequired Then
                        sbOn.Append(", ")
                    End If

                    da.SelectCommand.Parameters.AddWithValue("@Middlename", 
                    Middlenametextbox.Text)
                End If

sql.AppendFormat(sbOn.ToString + ")")


Вот что происходит, когда я запускаю его с помощью messagebox:

"вставить в [Таблица] ([Имя] [Фамилия] [Middle_name]) значения(@имя@фамилия@Middle_name)"

как вы можете видеть, здесь нет запятой, так что это недопустимый SQL-оператор.

Что я уже пробовал:

Я пытался использовать логическое значение в операторе, чтобы помочь, но оно не активирует запятые.

1 Ответов

Рейтинг:
6

Richard Deeming

Попробуйте что-нибудь вроде этого:

If Not String.IsNullOrEmpty(First_NameTextBox.Text) Then
    If andRequired Then
        sql.Append(", ")
        sbOn.Append(", ")
    End If
    
    sql.Append("[First_name]")
    sbOn.Append("@Firstname")
    
    da.SelectCommand.Parameters.AddWithValue("@Firstname", First_NameTextBox.Text)
    andRequired = True
End If

If Not String.IsNullOrEmpty(Last_NameTextBox.Text) Then
    If andRequired Then
        sql.Append(", ")
        sbOn.Append(", ")
    End If
    
    sql.Append("[Last_name]")
    sbOn.Append("@Lastname")
    
    da.SelectCommand.Parameters.AddWithValue("@Lastname", Last_NameTextBox.Text)
    andRequired = True
End If

If Not String.IsNullOrEmpty(Middlenametextbox.Text) Then
    If andRequired Then
        sql.Append(", ")
        sbOn.Append(", ")
    End If
    
    sql.Append("[Middle_name]")
    sbOn.Append("@Middlename")
    
    da.SelectCommand.Parameters.AddWithValue("@Middlename", Middlenametextbox.Text)
    andRequired = True
End If


Member 11856456

Я просто был немного не в себе. Я использовал messagebox. show, чтобы помочь мне собрать строку вместе. Спасибо, Ричард!!