1

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

我想使用 VB.NET。

4

2 回答 2

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

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

于 2009-02-15T11:34:23.640 回答
1

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

所有这些都将是基于集合的,所以非常快。

如果您在 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”)

于 2009-02-15T11:35:00.770 回答