Udate DataSet

martedì 25 ottobre 2005 - 12.58

w_t Profilo | Junior Member

Cosa sto' sbagliando ???

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Cteniza Profilo | Guru

Ti sei dimenticato di configurare il dataadapter.
Prova così:
Dim ds As DataSet = New DataSet()
Dim da As New OleDbDataAdapter("SELECT * FROM MyTable", oConn1)
(apro una parentesi con mysql dovresti usare l'adapter nativo di mysql)
Dim cmd As New OleDbCommandBuilder(da)
(stesso commento dovresti usare il builder nativo di mysql)
da.Fill(ds, "MyTable")

Brainkiller Profilo | Guru

Forse l'UpdateCommand non è stato istanziato, quindi ti da' errore di NullReferenceException.
L'update da DataSet a DataBase non è così banale, di solito si usa la classe CommandBuilder che ti viene in aiuto.
Prova a leggere questo Thread:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=4223

ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

w_t Profilo | Junior Member

Ho corretto con questo:

Non da errore ma non fa nulla...

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Cteniza Profilo | Guru

L'insert command non serve, ci ha già pensato il commandbuilder a crearlo.
Per quanto riguarda la tua affermazione che "non fa niente":
- se non apporti delle variazioni ai dati (inserimenti, cancellazioni, variazioni) il dataadapter non ha nulla da aggiornare
- se hai dato "acceptchanges" PRIMA di eseguire l'update del dataadapter di nuovo non c'è nulla da aggiornare.


w_t Profilo | Junior Member

e qiondi come dovrei modificare il mio codice per fare in modo che inserisca tutto il DataSet nell'altra tabella dell'altro Database ???

Cteniza Profilo | Guru

Se hai due db a disposizione e vuoi riversare i dati di uno nell'altro è sempre meglio usare un comando sql INSERT INTO , se lo vuoi fare da codice fai:
- un datareader sul primo db
- un command sul secondo db
- ciclo di lettura dati
- impostazione parametri del command
- esecuzione del command

Se vuoi farti proprio del male e farlo con un dataset:
- definisci due tabelle sul dataset (una per il db1 ed una per il db2)
- definisci e configura due dataadapter
- fai la fill del dataset
- fai un ciclo sulle rows della prima tabella
- per ogni row della prima tabella fai add sulla seconda
- alla fine del ciclo fai l'update del dataadapter seconda tabella


w_t Profilo | Junior Member

Il primo metodo e' gia funzionante, ma lo volevo scartare per le prestazioni...

ma non e' molto piu' lungo fare un ciclo???

io volevo appunto inserire un DtaSet tutto in un botto, ma se devo ciclare pure il DataSet rimango con il vecchio...

altrimenti come posso trasferire (2000 tabelle da 1000/2000 record) in un (altro Database) ma convergerle tutte in un (unica Tabella Finale) ???

Cteniza Profilo | Guru

Il metodo più veloce per caricare è quello nativo del database, se previsto.
Tra l'altro, scrivere del codice per fare qualche cosa che si può fare con gli strumenti nativi del database è una doppia perdita di tempo.


w_t Profilo | Junior Member

per nativo intendi una QUERY perche altrimenti MySQL-Front o altri Client non prevedono il MERGE da multiple tabelle in una situata in un altro DB...

Cteniza Profilo | Guru

Il modo più veloce è caricare ogni singolo file con la funzione nativa.
Sql server ad esempio ha delle utilità di caricamento dati che sono velocissime.


w_t Profilo | Junior Member

OK giusto e solo che io sono su MySQL

Cteniza Profilo | Guru

Per mysql prova questo:
http://www.classes.cs.uchicago.edu/archive/2005/fall/23500-1/mysql-load.html

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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5