我想在网页上添加一个文本框,以便用户添加空格分隔的标签。当用户提交页面时,如何从文本框中取出标签并将每个标签添加为 SQL 数据库中的记录?
我想使用 VB.NET。
听起来你想要这样的东西:
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
未经测试,但应该足够接近您的需求。
我的方法是将文本框中的值发送到 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”)