Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
SqlCommandBuilder vs StoredProcedure
lunedì 18 gennaio 2010 - 16.04
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
enricovirg
Profilo
| Newbie
36
messaggi | Data Invio:
lun 18 gen 2010 - 16:04
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
229
messaggi | Data Invio:
lun 18 gen 2010 - 17:51
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
Torna su
Stanze Forum
Elenco Threads
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 !