SqlDataAdapter의 일괄 삽입/업데이트를 시도하고 있습니다. UpdateBatchSize = 1로 설정하면 작동하지만 2로 설정하면 "지정된 매개 변수 이름 'Id'이 (가) 유효하지 않습니다."SqlDataAdapter는 배치 크기를 설정할 때 매개 변수 이름이 잘못되었습니다.
{
sqlDataAdapter.Update(youDataSet,"YourTable");
}
SqlDataAdapter의 일괄 삽입/업데이트를 시도하고 있습니다. UpdateBatchSize = 1로 설정하면 작동하지만 2로 설정하면 "지정된 매개 변수 이름 'Id'이 (가) 유효하지 않습니다."SqlDataAdapter는 배치 크기를 설정할 때 매개 변수 이름이 잘못되었습니다.
{
sqlDataAdapter.Update(youDataSet,"YourTable");
}
을 디 컴파일 SqlDataAdapter를 후 :
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.Update(table);
}
, 당신은, 내가 그렇게해야한다고 생각 테이블 이름 다음에 데이터 집합의 이름을 입력해야 스택 트레이스를 사용하여이 라인에 왔습니다.
if (!SqlCommandSet.SqlIdentifierParser.IsMatch(sqlParameter.ParameterName))
throw ADP.BadParameterName(sqlParameter.ParameterName);
그래서 일반적으로 SqlParameter 이름에서 @를 생략 할 수 있지만이 일괄 처리를 수행 할 때는 필요합니다. 아주 이상한. 올바른 줄은
command.Parameters.Add("@Id", SqlDbType.Int).SourceColumn = "Id";