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
Datatable to sql table
venerdì 03 settembre 2010 - 21.11
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
dompa72
Profilo
| Senior Member
245
messaggi | Data Invio:
ven 3 set 2010 - 21:11
Ciao,
vorrei sapere come posso inviare il contenuto di un DataTable in una tabella SQL. In caso non esiste la tabella, il connettore crea la tabella.
Di solito inserisco la tabella tramite degli Insert per ogni riga.
Ho letto qualcosa sul Bulkcopy ma non ho capito molto. E' la strada giusta???
Grazie
franco.geko
Profilo
| Junior Member
65
messaggi | Data Invio:
sab 4 set 2010 - 20:52
Di solito se i dati sono pochi anche io uso inserimenti diretti dalla Datatable.
Non sarà molto efficiente ma hai il controllo completo sull'operazione di inserimento ;)
Se nella datatable i dati li inserisci ex novo (del tipo crei il datatable e usi il metodo Add della collection rows quindi i record vengono segnati come "added"), potresti usare il dataadapter e configurare il commandbuilder in modo adeguato.
Altrimenti dai un occhio qui per vedere se può esserti utile
http://msdn.microsoft.com/en-us/library/1y8tb169
(v=VS.80).aspx
Ciao
Franco
dompa72
Profilo
| Senior Member
245
messaggi | Data Invio:
lun 6 set 2010 - 12:59
Praticamente devo prelevare dei dati da un db aziendale, manipolarli e copiarli in un db locale per ulteriori viste e da queste poi esportarli in excel e/o stamparli.
Cercavo un modo per velocizzare la copia in locale, questa naturalmente deve anche creare la tabella.
Forse il metodo del bulkcopy, se funziona con i datatable, è ottimale.
Grazie e sono ben accetti ulteriori considerazioni.
franco.geko
Profilo
| Junior Member
65
messaggi | Data Invio:
lun 6 set 2010 - 16:18
Dompa,
se hai a disposizione il framework dal 2.0 in poi, l'oggetto SqlBulkCopy funziona bene anche con le Datatable.
Ti posto un pezzo di codice che ho usato or ora per testarlo ed ha funzionato su due database Sql Server 2005 su macchine diverse.
<<<<<<<<<<<<<<<<<<<<<<<
Friend sSourceConnectionString As String = "Data Source=NOMESERVERSOURCE;Initial Catalog=DB_SOURCE;Integrated Security=SSPI"
Friend sDestinationConnectionString As String = "Data Source=NOMESERVERDEST;Initial Catalog=DB_DEST;Integrated Security=SSPI"
Public Sub DoIt()
Dim sourceConnection As New SqlConnection(sSourceConnectionString)
Dim destConnection As New SqlConnection(sDestinationConnectionString)
Dim sourceDt As New DataTable
Dim Da As New SqlDataAdapter("Select * from SOURCETABLE", sourceConnection)
sourceConnection.Open()
destConnection.Open()
Da.Fill(sourceDt)
' Note that the column positions in the source DataTable
' match the column positions in the destination table,
' so there is no need to map columns.
Using bulkCopy As SqlBulkCopy = _
New SqlBulkCopy(destConnection)
bulkCopy.DestinationTableName = "DESTINATIONTABLE"
' Write from the source to the destination.
bulkCopy.WriteToServer(sourceDt)
MsgBox("OK")
End Using
sourceConnection.Close()
destConnection.Close()
End Sub
<<<<<<<<<<<<<<<<<<<<<<<
Il codice può essere solo migliorato...comunque il concetto di funzionamento è quello.
Occhio che nell'esempio le tabelle Source e Destination hanno la stessa struttura.
Nel caso in cui ci fossero differenze strutturali, o normalissi il tutto tramite la Select SQL oppure utilizza il metodo ColumnMappings dell'oggetto.
Grazie mille per avermi fatto ri-scoprire un nuovo oggetto di cui sapevo l'esistenza ma che non avevo mai usato nei miei programmi...mi sa che appena avrò un attimo di tempo farò un restyling a qualche applicativo...;)
Ciao
Franco
dompa72
Profilo
| Senior Member
245
messaggi | Data Invio:
mar 7 set 2010 - 14:01
>Grazie mille per avermi fatto ri-scoprire un nuovo oggetto di
>cui sapevo l'esistenza ma che non avevo mai usato nei miei programmi...mi
>sa che appena avrò un attimo di tempo farò un restyling a qualche
>applicativo...;)
Grazie a te per avermi risolto anche un po' di ore studio
>Ciao
>Franco
Ciao e appena scrivo il codice ti faccio sapere
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 !