2009-03-04 2 views
0

Я обновление базы данных SQL Server 2005 с использованием пакетного обновления, как показано нижеПроблемы с пакетным обновлением с помощью DataAdapter

cmd = new SqlCommand("update Table1 set column1 = @column1 where EmpNo = @EmpNo", con); 
       cmd.Parameters.Add(new SqlParameter("@column1", SqlDbType.VarChar)); 
       cmd.Parameters["@column1"].SourceVersion = DataRowVersion.Current; 
       cmd.Parameters["@column1"].SourceColumn = "Column"; 

       cmd.Parameters.Add(new SqlParameter("@EmpNo", SqlDbType.Int)); 
       cmd.Parameters["@EmpNo"].SourceVersion = DataRowVersion.Current; 
       cmd.Parameters["@EmpNo"].SourceColumn = "EmpNo"; 

       cmd.UpdatedRowSource = UpdateRowSource.None; 

       sqlDa = new SqlDataAdapter(); 
       con.Open(); 
       sqlDa.UpdateCommand =cmd; 
       sqlDa.UpdateBatchSize = 10; 
       sqlDa.Update(dt); 

       con.Close(); 

Но данные не updated.I я не в состоянии понять, что это problem.Any помощь приветствуется.

ответ

1

Я бы предположил, что вы посмотрите на dt прямо перед выпуском команды обновления. Убедитесь, что есть несколько строк, которые имеют RowState для обновления или добавления. Если нет, в вашем (я предполагаю) DataTable ничего не обновляется для базы данных.

Также попробуйте удалить операцию установки свойства .SourceVersion.

Если все выглядит хорошо, запустите трассировку базы данных прямо перед выпуском .Update.

Это всего лишь пара первых шагов, чтобы попробовать.

0

SqlDataAdapter подход

использованием (SqlCommand InsertCommand = новый SqlCommand (

"ВСТАВИТЬ BulkLoadTable (FieldA, FieldB) ЗНАЧЕНИЯ (@FieldA, @FieldB)", соединение))

{ InsertCommand .Parameters.Add ("@ FieldA", SqlDbType.VarChar, 10, "FieldA");

insertCommand.Parameters.Add("@FieldB", SqlDbType.Int, 4, "FieldB"); 
// Setting UpdatedRowSource is important if you want to batch up the inserts 
insertCommand.UpdatedRowSource = UpdateRowSource.None; 
using (SqlDataAdapter insertAdapter = new SqlDataAdapter()) 
{ 
    insertAdapter.InsertCommand = insertCommand; 
    // How many records to send to the database in one go (all of them) 
    insertAdapter.UpdateBatchSize = myDataTable.Rows.Count; 

    // Send the inserts to the database 
    insertAdapter.Update(myDataTable);     
} 

}

Смежные вопросы