Attualità e Information Technology

August 10, 2007

SqlCommandBuilder e i blog

Filed under: IT, .NET

Ok, titolo strano, lo so.

Il principio è questo: grazie ad un blog e ad un post su come copiare dati con ADO.NET e SqlDataAdapter ho letteralmente scoperto la classe SqlCommandBuilder e lo splendido metodo GetInsertCommand().

Direte: e allora? Gran scoperta, complimentoni…

A parte l’ironia la cosa cade a “fagiulo”, anche se leggermente in ritardo, visto che proprio ieri ho perso un sacco di tempo nella scrittura di due insert usando i SqlCeDataAdapter. Ho perso un sacco perchè mi sono messo lì a scrivere una cinquatina se non più di sqlAdp.InsertCommand.Parameters.Add(…); mentre con SqlCommandBuilder.GetInsertCommand() avrei avuto tutto a gratis.

Per capire meglio la questione spiego cosa stavo realizzando.

In poche parole devo leggere delle tabelle da SQL Server 2005 Standard e copiarle su SQL Server 2005 Compact. Lo devo fare via codice e non via ETL, e tantomeno via RDA o Merge Replication. Per renderla veloce ecco allora che ho recuperato una DataTable dalla tabella di destinazione e da quella di sorgente. Poi ho copiato le DataRow dalla DataTable sorgente a quella di destinazione. Infine ho ridato la DataTable in pasto al SqlCeDataAdapter per fare l’update. Dovevo però definire l’InsertCommand del Data Adapter e così ho scritto una caterva, come già detto, di sqlAdp.InsertCommand.Parameters.Add(…);

Ora con quello letto nel post ho modificato il metodo passandogli sia la SqlConnection sorgente sia la SqlCeConnection di destinazione e usando la GetInsertCommand ho portato il tutto a poche linee di codice. Da oltre 200 linee di codice ad appena 40 linee.

P.S. Queste cose sono figlie anche del solito copia-incolla, dove recuperi qualcosa che avevi fatto in situazioni diverse e lo riadatti alla svelta senza pensare se risulta possibile farlo in maniera più furba. Vedi ad esempio copia delle DataRow tra due DataTable invece che “condivisione” dello stesso DataSet.

Technorati tags , , ,

AddThis Social Bookmark Button
   

Get free blog up and running in minutes with Blogsome | Theme designs available here