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
V08 - CommandBuilder
mercoledì 16 dicembre 2009 - 15.44
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
brazero
Profilo
| Junior Member
63
messaggi | Data Invio:
mer 16 dic 2009 - 15:44
Ciao a tutti!
Come potrei fare per usare il commandbuilder su una tabella senza chiave primaria (ma con record univoci)?
oppure qualcuno mi può consigliare un'altro metodo senza scrivere la query string?
spiego, dovrei prendere i dati da una tabella X del database, lo salvo dentro un datatable.. gestisco alcuni valori e volevo aggiornare un'altra tabella Y col datatable (la tabella Y ha lo stesso schema della X).. il problema è che all'inizio non conosco il nome della tabella X qndi nn conosco i parametri.. (in realtà volevo trovare un metodo alternativo per fare la query string concatenata dentro mille cicli)
Grazie
Teech
Profilo
| Expert
573
messaggi | Data Invio:
mer 16 dic 2009 - 18:32
Con i CommandBuilder DEVE essere presente una chiave primaria o univoca.
http://msdn.microsoft.com/it-it/library/tf579hcz
(VS.80).aspx
Estratto dal link:
<SelectCommand deve anche restituire almeno una chiave primaria o una colonna univoca. In caso contrario, viene generata un'eccezione InvalidOperation e i comandi non vengono creati.>
La soluzione è di scrivere a mano i command (come suggerito nel link).
<Per ottenere prestazioni ottimali, specificare i comandi in modo esplicito anziché utilizzare DbCommandBuilder.>
Se riesci ad essere più esplicito su quello che devi fare possiamo provare a cercare una via alternativa...
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole
brazero
Profilo
| Junior Member
63
messaggi | Data Invio:
gio 17 dic 2009 - 15:04
Grazie..
allora ho un database con sostanzialmente due tipologie di tabelle: la prima sono delle tabelle che contengono "bozze di dati".. e una seconda che contengono i risultati finali..
io prendo i dati da una di queste tabelle che contengono le bozze, salvo dentro un datatable, elaboro i dati e li dovrei salvare poi dentro la rispettiva tabella finale..
la mia difficoltà è dovuta al fatto che non so a priori su quale tabelle verrano fatte le operazioni.. qndi non conosco i parametri..
quindi la mia domanda è: qual'è il migliore metodo per salvare i dati che sono dentro il datatable nel database? è possibile farlo senza usare il metodo spartano di fare i cicli e concatenare le stringhe? magari impostando il dataadapter in una certa maniera o col commandbuilder (il problema è che le tabelle non hanno una chiave primaria qndi viene generata un'eccezione)
Ciaooo!
Teech
Profilo
| Expert
573
messaggi | Data Invio:
lun 21 dic 2009 - 11:44
Scusa il ritardo.
Partiamo da come il .NET Framework si comporta con i DataAdapter (molto in soldoni): ogni DataAdapter ha fondamentalmente un SelectCommand per popolare un DataTable (ogni DataTable può avere un solo Adapter). Oltre a questo ha anche dei Command per modificare i dati (Insert, Update e Delete).
Quando operi delle operazioni sui DataRow del DataTable lo stato (RowState) del DataRow cambia automaticamente (Added, Deleted e Updated). In base allo stato di ogni singola riga modificata sul DataTable, quando viene invocato il metodo Update dell'Adapter, viene eseguito il command associato.
Per costruire questi command puoi usare il CommandBuilder, ma essendo un metodo con delle specifiche ben precise è poco flessibile.
Per contro puoi scrivere i tuoi command e assegnarli all'Adapter in base alle varie fattispecie in cui ti trovi. La scrittura dei Command non deve avvenire con l'utilizzo di concatenamento di stringhe (o almeno è una tecnica sconsigliatissima) ma puoi usare i Parameters gestiti dai Command.
Penso di aver messo anche troppa carne al fuoco: cerca un po' di documentazione sul Web (ci sono migliaia di tutorial ed esempi) e se hai dubbi chiedi pure...
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole
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 !