c# - 使用存储过程将数组插入到sql表中

标签 c# asp.net sql-server tsql

我有一个这样的表:

keyword (table name)        
----------------    
kid   key   
----------------    
1     asp.net   
2     php   
3     C#‎   
4     vb

在网络表单页面中,我有一个文本框,用户可以插入如下字符串:

asp.net,php,C#‎,vb,css

我必须将此字符串插入另一个表中,如下所示:

p-tag (table name)
----------------
pid  kid
----------------
1    1
1    2
1    3
1    4


我必须首先检查字符串中的那些词是否存在于关键字中。如果是,将它们插入 p-tag 表中。 我可以使用 C# 代码执行此操作,但我想使用存储过程。
可能吗?
注意:我的英语不好,抱歉。

最佳答案

我建议将关键字作为表值参数传递。请参阅本文以了解更多信息 - Table-Valued Parameters .还有一个关于如何使用它的很好的 C# 示例。然后通过单个查询就可以很容易地完成所需的操作。首先为表值参数创建一个类型:

    CREATE TYPE dbo.TableTypeName AS TABLE
        ( keyName nvarchar(50) )

然后在这样的过程中使用它:

CREATE PROCEDURE sp_UpdateTags 
    (@tableParameter dbo.TableTypeName READONLY, @tagId INT)
AS
INSERT [p-tag](pid, kid)
SELECT @tagId, K.kid from @tableParameter tP
inner join [keyword] K on key = tP.keyName

这将只插入关键字表中存在的值。

希望对您有所帮助!

关于c# - 使用存储过程将数组插入到sql表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21510296/

相关文章:

c# - 使用 wpf 发送电子邮件

asp.net - asp.net web.config 中的模拟是什么?

c# - 在缓存中存储图像

sql-server - 在SSIS中,如何将unicode数据类型转换为excel列?

带域用户的 sqlpackage.exe

C#刷到字符串

c# - 使用foreach在asp.net中滚动图像

c# - 队列如何与 foreach 循环交互

asp.net - 如何在Visual Studio 2019中创建ASP.NET网站?

sql-server - 具有格式化时间的 SSIS 变量