首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置批量大小时,SqlDataAdapter给出参数名称无效错误

设置批量大小时,SqlDataAdapter给出参数名称无效错误
EN

Stack Overflow用户
提问于 2013-04-12 08:36:10
回答 2查看 971关注 0票数 4

我正在尝试批量插入/更新SqlDataAdapter。当我设置UpdateBatchSize = 1时,它是有效的,但是设置为2会给出异常“指定的参数名'Id‘无效。”

代码语言:javascript
复制
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);
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-12 09:36:05

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

代码语言:javascript
复制
if (!SqlCommandSet.SqlIdentifierParser.IsMatch(sqlParameter.ParameterName))
    throw ADP.BadParameterName(sqlParameter.ParameterName);

因此,通常您可以在SqlParameter名称中省略@,但在执行此批处理时,它需要@。非常奇怪。正确的行将变为

代码语言:javascript
复制
command.Parameters.Add("@Id", SqlDbType.Int).SourceColumn = "Id";
票数 2
EN

Stack Overflow用户

发布于 2013-04-12 08:47:24

代码语言:javascript
复制
 {
   sqlDataAdapter.Update(table);

 }

该参数对sqlDataAdapter无效,需要先输入DataSet名称,再输入表名,我觉得应该是这样:

代码语言:javascript
复制
   {

   sqlDataAdapter.Update(youDataSet,"YourTable");
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15961208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档