如何插入从分配给 Dictionary<int, int> 的 SQL 表中提取的数据?(ASP.Net)

Posted

技术标签:

【中文标题】如何插入从分配给 Dictionary<int, int> 的 SQL 表中提取的数据?(ASP.Net)【英文标题】:How Do I Insert Data I Pulled From A SQL Table I Assigned To A Dictionary<int, int>?(ASP.Net) 【发布时间】:2021-10-06 05:05:56 【问题描述】:

我将一个 SQL Server 表中的两个 int 值(CampaignIdLinkId)分配给了一个 Dictionary&lt;int,int&gt; 变量,现在我试图将它插入到另一个 SQL Server 表中。我需要做什么才能将分配给字典的每个数据值放入

command.parameters.Add(@UserAgent, ????) 

command.parameters.Add(@LinkId, ????)

我的代码

string queryString = "SELECT CampaignId, LinkId FROM TrackClick WHERE UserAgent IS NOT NULL;";         

var UserDetails = new Dictionary<int, int>();

using (SqlConnection connection = new SqlConnection(con))

    SqlCommand command = new SqlCommand(queryString, connection);
    connection.Open();

    using SqlDataReader reader = command.ExecuteReader();

    while (reader.Read())
    
        UserDetails.Add(reader.GetInt32(0), reader.GetInt32(1));
    

 
var insertString = @"INSERT INTO dbo.User_Details (CampaignId, LinkId,)
                     VALUES (@CampaignId, @LinkId)";

using var connection = new SqlConnection(con);
            //code to insert the insertString

SqlCommand command = new SqlCommand(insertString, connection);
command.Parameters.AddWithValue("@CampaignId",/* ????*/);
command.Parameters.AddWithValue("@LinkId",/* ????*/);

connection.Open();

// insert bulk Records into DataBase.  
command.ExecuteNonQuery();
connection.Close();

【问题讨论】:

【参考方案1】:

对于多行,您可以尝试使用 INSERT SELECT 语句。这将摆脱查询的参数化,这通常是一件坏事。但是您没有插入用户输入,因此 SQL 注入不是那么重要。 所以你只需要遍历你的字典并在 SQL 语句上进行字符串连接

insert into dbo.User_Details ( CampaignId, LinkId,)
SELECT @CampaignId1, @LinkId1
UNION ALL
SELECT @CampaignId2, @LinkId2

等等……

【讨论】:

以上是关于如何插入从分配给 Dictionary<int, int> 的 SQL 表中提取的数据?(ASP.Net)的主要内容,如果未能解决你的问题,请参考以下文章

如何将字典值分配给 Python 中的变量?

如何将从函数返回的布尔值分配给 PostgreSQL 9.4 中的变量?

如何将插入的输出值分配给 sql server 中的变量? [复制]

leetcode 720 - Longest Word in Dictionary

如何将 Dictionary<string, string> 变量从后面的代码传递到 asp.net?

524. Longest Word in Dictionary through Deleting