gpt4 book ai didi

c# - SqlDataAdapter 在设置批处理大小时给出参数名称无效错误

转载 作者:行者123 更新时间:2023-11-30 12:30:27 25 4
gpt4 key购买 nike

我正在尝试批量插入/更新 SqlDataAdapter。当我设置 UpdateBatchSize = 1 时,它可以工作,但将其设置为 2 会出现异常“指定的参数名称‘Id’无效。”。

using (var sqlDataAdapter = new SqlDataAdapter
{
UpdateBatchSize = 2
})
using (var connection = new SqlConnection("Data Source=server;Initial Catalog=DB;Integrated Security=True"))
using (var command = new SqlCommand("INSERT INTO Test (Id) VALUES (@Id)", connection)
{
UpdatedRowSource = UpdateRowSource.None
})
{
command.Parameters.Add("Id", SqlDbType.Int).SourceColumn = "Id";
sqlDataAdapter.InsertCommand = command;

var table = new DataTable("Test");
table.Columns.Add("Id");
table.Rows.Add(1);
table.Rows.Add(2);
sqlDataAdapter.Update(table);
}

最佳答案

在反编译 SqlDataAdapter 并使用堆栈跟踪后,我来到了这一行。

if (!SqlCommandSet.SqlIdentifierParser.IsMatch(sqlParameter.ParameterName))
throw ADP.BadParameterName(sqlParameter.ParameterName);

事实证明,通常您可以从 SqlParameter 名称中省略 @,但是在执行此批处理时,它需要它。很奇怪。正确的行变为

command.Parameters.Add("@Id", SqlDbType.Int).SourceColumn = "Id";

关于c# - SqlDataAdapter 在设置批处理大小时给出参数名称无效错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15961208/

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