2009-03-04 6 views
0

Je mets à jour la base de données SQL Server 2005 en utilisant la mise à jour par lots, comme indiqué ci-dessousproblème avec la mise à jour de lot à l'aide 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(); 

Mais les données ne sont pas updated.I suis incapable de comprendre ce qui est le problem.Any l'aide est appréciée.

Répondre

1

Je vous suggère de regarder le droit avant d'émettre la commande de mise à jour. Assurez-vous qu'il existe certaines lignes qui ont RowState de mise à jour ou ajouté. Sinon, il n'y a rien dans votre (je suppose) DataTable à mettre à jour à la base de données.

Également, essayez de supprimer l'opération de jeu de propriétés .SourceVersion.

Si tout semble correct, commencez une trace sur la base de données avant d'émettre le fichier .Update.

Ce ne sont que quelques premières étapes à essayer.

0

approche SqlDataAdapter

utilisant (SqlCommand InsertCommand = new SqlCommand (

"INSERT BulkLoadTable (FieldA, FieldB) VALUES (@FieldA, @FieldB)", connexion))

{ 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);     
} 

}

Questions connexes