Разделение строки текста из текстового поля с помощью VB.NET

Я хочу добавить текстовое поле на веб-страницу, чтобы пользователи могли добавлять теги с разделителями-пробелами. Когда пользователь отправляет страницу, как мне взять теги из текстового поля и добавить каждый в качестве записи в базу данных SQL?

Я хочу использовать VB.NET.


person Community    schedule 15.02.2009    source источник
comment
Вы должны предоставить иллюстративный пример, чтобы дать лучшее представление о том, что вы хотите. (Редактируйте свой пост)   -  person Cerebrus    schedule 15.02.2009


Ответы (2)


Похоже, вы хотите что-то вроде:

Using connection as New SqlConnection("connection string")
    connection.Open()

    For Each tag As String In TextBox.Split(CChar(" "))
        Using command as New SqlCommand("INSERT INTO UsedTags(Tag) VALUES(@Tag)", connection)
            command.Parameters.Add("@Tag", SqlDbType.varchar).value = tag

            Try
                command.ExecuteNonQuery()
            Catch ex As SqlException
                Debug.WriteLine(ex.ToString())
            End Try
        End Using
    End For
End Using

Не тестировалось, но должно быть достаточно близко к вашим потребностям.

person Sören Kuklau    schedule 15.02.2009

Мой способ состоял бы в том, чтобы отправить значение из текстового поля в хранимую процедуру SQL, разделить текст, а затем вставить отдельные строки.

Все это будет основано на наборах, так что очень быстро.

если вы разделите его в VB.NET и отправите отдельные операторы INSERT в SQL, это будет намного медленнее.

Вы можете преобразовать данные с разделителями текстового поля в XML и отправить их в SQL, а затем использовать их в качестве основы для своих операторов INSERT. Но лично я думаю, что предпочтительнее разделить его в SQL.

Я найду для вас ссылку

Я не нашел работающий пример, поэтому вот предложение

INSERT INTO UsedTags
(
    Tag
)
SELECT SplitValue
FROM dbo.MySplitFunction(@ListOfTags)

См. http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=50648 для рекомендуемых функций SPLIT

Если вы хотите просто сделать INSERT прямо из VB.NET, вы можете сделать что-то вроде:

INSERT INTO UsedTags
(
    Tag
)
SELECT "Tag1"
UNION ALL
SELECT "Tag2"

т. е. вы создаете составной оператор SELECT в VB.NET, разделив строку тега с разделителями.

(Если могут быть повторяющиеся теги, и вы хотите удалить дубликаты, используйте «ОБЪЕДИНЕНИЕ» вместо «ОБЪЕДИНЕНИЕ ВСЕ»)

person Kristen    schedule 15.02.2009
comment
Учитывая, что 1) MSSQL (я предполагаю, что это то, о чем мы здесь говорим) не имеет встроенной функции разделения строк, 2) нет входного набора, о котором можно было бы говорить, 3) вероятно, очень небольшое количество тегов, я сомневаюсь Ваши предположения о производительности. - person Sören Kuklau; 15.02.2009
comment
Я не знаком с VB.NET, но если команда command.Parameters.Add будет обращаться к серверу для каждой строки, то я готов поспорить на это с вами на пиво! Я согласен, что для небольшого количества тегов разделение тривиально, однако это делается (но для большого количества определенно необходимо соблюдать осторожность при выборе метода SQL) - person Kristen; 15.02.2009