SqlCommandBuilder vs StoredProcedure

lunedì 18 gennaio 2010 - 16.04

enricovirg Profilo | Newbie

Vorrei utilizzare l'oggetto SqlCommandBuilder di ADO.net per inserire dei dati in una tabella di SQL Server...

ovvero

Dim dt As New DataTable
Dim da As SqlDataAdapter
Dim cb As SqlCommandBuilder
Dim row As DataRow

cmd = New SqlCommand("SELECT * FROM miatabella", sqlCnn)
If sqlCnn.State = ConnectionState.Closed Then
sqlCnn.Open()
End If
da = New SqlDataAdapter(cmd)
da.FillSchema(dt, SchemaType.Source)
cb = New SqlCommandBuilder(da)
row = dt.NewRow

row("miocampo") = valore
'tutti gli altri campi...

dt.Rows.Add(row) --> aggiunge il row al datatable
da.Update(dt) --> invia il row alla tabella sql server

lo trovo molto comodo come oggetto...
ma mi chiedevo a livello di performances come va...se si avvicina ad una stored procedure residente nel db...

qualche feedback ?

tonyexpo Profilo | Senior Member

Ciao

dipende da che ottica guardi la cosa:
parlando di produttività, certamente un CommandBuilder è mostruosamente più comodo per le operazioni CRUD (select, update, inser, delete) ovviamente quasi inutile se ti serve fare operazioni di calcolo o di logica prima delle insert vere e proprie (qui ti server una Stored).
Da un punto di vista di performance pure c'è da discuterne perchè: facendo delle .Add su di un datatable appositamente creato si sta utilizzando una cache che ti sta svincolando dal db, quindi se anche l'operazione in se di insert sul DB è più lenta (tipo lo 0,x%), nell'insieme stai facendo un operazione che potrebbe far andare l'applicazione più veloce visto che ogni volta non devi usare il DB, che invece userai quando fai il .Update sul DataAdapter per persistere i dati, potendo anche impostare un maggior numero di operazioni batch per volta (.UpdateBatchSize), senza contare il fatto che puoi usare una transazione sql, impostandola sul command collegato al DataAdapter, o anche una transazione LTM (distribuita di windows con il DTC).

Quindi, sperando di essere stato chiaro, la tua domanda puo avere varie risposte in base a ciò che ti serve implementare.


Antonio Esposito
MCTS, MCP

http://blogs.dotnethell.it/espositos
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5