gpt4 book ai didi

c# - 插入带有参数的多行 Sql Server

转载 作者:太空狗 更新时间:2023-10-30 00:38:46 26 4
gpt4 key购买 nike

我想弄清楚是否有一种方法可以在使用参数的同时在 Sql Server 中执行多值插入,准确地说,有这样的命令:

com = new SqlCommand("insert into myTable values (@recID,@tagID)", con);
com.Parameters.Add("@recID", SqlDbType.Int).Value = recID;
com.Parameters.Add("@tagID", SqlDbType.Int).Value = tagID;
com.ExecuteNonQuery();

考虑到每个值的参数可能不同,是否有一种方法可以使用参数执行多值单次插入? (例如:tagID 可能总是不同的)

我一直在 Internet 上搜索,但到目前为止还没有成功,在此先感谢您,问候。

最佳答案

您可以使用表值参数:How to pass table value parameters to stored procedure from .net code

首先,在 SQL Server 中创建类型:

CREATE TYPE [dbo].[myTvpType] AS TABLE 
(
[RecordID] int,
[TagID] int
)

以及用于插入数据的 C# 代码:

internal void InsertData(SqlConnection connection, Dictionary<int, int> valuesToInsert)
{
using (DataTable myTvpTable = CreateDataTable(valuesToInsert))
using (SqlCommand cmd = connection.CreateCommand())
{
cmd.CommandText = "INSERT INTO myTable SELECT RecordID, TagID FROM @myValues";
cmd.CommandType = CommandType.Text;

SqlParameter parameter = cmd.Parameters.AddWithValue("@myValues", myTvpTable);
parameter.SqlDbType = SqlDbType.Structured;

cmd.ExecuteNonQuery();
}
}

private DataTable CreateDataTable(Dictionary<int, int> valuesToInsert)
{
// Initialize the DataTable
DataTable myTvpTable = new DataTable();
myTvpTable.Columns.Add("RecordID", typeof(int));
myTvpTable.Columns.Add("TagID", typeof(int));

// Populate DataTable with data
foreach(key in valuesToInsert.Key)
{
DataRow row = myTvpTable.NewRow();
row["RecordID"] = valuesToInsert[key];
row["TagID"] = key;
}
}

关于c# - 插入带有参数的多行 Sql Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38521908/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com