使用VB.NET从文本框中拆分一串文本

时间:2009-02-15 11:03:18

标签: sql vb.net split

我想在网页上添加一个文本框,以便用户添加空格分隔的标签。当用户提交页面时,如何从文本框中取出标签并将每个标签作为记录添加到SQL数据库中?

我想使用VB.NET。

2 个答案:

答案 0 :(得分: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

未经测试,但应足够接近您的需求。

答案 1 :(得分:1)

我的方法是将文本框中的值发送到SQL存储过程,让文本SPLIT,然后插入各行。

所有这些都是基于设置的,所以非常快。

如果你在VB.NET中拆分它并将单个INSERT语句发送到SQL会慢得多。

您可以将文本框分隔的数据转换为XML并将其发送到SQL,并将其用作INSERT语句的基础。但我个人认为在SQL中拆分它是可取的。

我会找到一个链接

我没有轻易找到一个有用的例子,所以这是一个建议

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

有关推荐的SPLIT功能,请参阅http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=50648

如果您想直接从VB.NET创建INSERT,您可以执行以下操作:

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

即。你在VB.NET中生成复合SELECT语句,拆分了分隔标记字符串。

(如果可能有重复的标签,并且您想删除重复项,请使用“UNION”而不是“UNION ALL”)