2009-03-04 47 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(

「INSERT BulkLoadTable(FIELDA,FieldB)VALUES(@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);     
} 

}