2013-04-12 1 views

답변

2

을 디 컴파일 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); 
} 
0
이 매개 변수는 SqlDataAdapter를에 유효하지 않습니다
{ 
    sqlDataAdapter.Update(table); 

} 

, 당신은, 내가 그렇게해야한다고 생각 테이블 이름 다음에 데이터 집합의 이름을 입력해야 스택 트레이스를 사용하여이 라인에 왔습니다.

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

그래서 일반적으로 SqlParameter 이름에서 @를 생략 할 수 있지만이 일괄 처리를 수행 할 때는 필요합니다. 아주 이상한. 올바른 줄은

command.Parameters.Add("@Id", SqlDbType.Int).SourceColumn = "Id"; 
관련 문제