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
Memorizzare un dataSet
mercoledì 26 ottobre 2005 - 21.17
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Piero
Profilo
| Newbie
13
messaggi | Data Invio:
mer 26 ott 2005 - 21:17
Salve a tutti,
ho la necessità di memorizzare in un database sql server un dataset popolato tramite un selectcommand su di un file di testo:
...........
da.SelectCommand = cm
da.SelectCommand.Connection = cnn
fileName = fileName.Substring(0, fileName.LastIndexOf("."))
da.Fill(ds, fileName)
...........
Fin qui tutto bene! il DataSet 'ds' è popolato perfettamente!
Ora il problema è memorizzare questo 'ds' in una tabella.
Dovrei creare un nuovo oggetto DataAdapter? perchè 'da' ha le "impostazione" del file txt...?
credo che non conviene fare un SelectCommand, per poi fare un update..., di tutta la tabella, altrimenti con l'andare del tempo ci saranno migliaia e migliaia di record!
C'è un modo diretto per memorizzare un dataset in "coda" ad una tabella? (i campi del dataset corrispondono ai campi della tabella fisica)
Grazie, Piero.
ysdemarc
Profilo
| Expert
587
messaggi | Data Invio:
gio 27 ott 2005 - 09:26
prova ad aggiungere (con Add del DataSet) il tuo DataTable al DataSet che usi per il medoto Fill del DataAdapter
poi dando in pasto questo DataTable all'Update del DataAdapter non dovresti avere problemi.
Attenzione però ai conflitti di chiave.
Vincenzo
Programmatore sbilenco :-D
Piero
Profilo
| Newbie
13
messaggi | Data Invio:
gio 27 ott 2005 - 19:57
Credo che non posso fare come mi dici...
Il DataAdapter 'da' non posso usarlo perchè è di tipo OleDb, mentre il database in cui vvolgio salvare il dataset è SQL server... Ho provato a fare così, non mi dà nessun errore ma non salva nulla.
Private Sub btnSalva_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalva.Click
'Salvo nel database
Dim myConnection As SqlConnection
myConnection = New SqlConnection("Integrated Security=SSPI;Data Source=(local); Initial Catalog=batch")
myConnection.Open()
Dim sql As String = "SELECT * FROM Trcrep"
Dim DataTrcrep As New SqlDataAdapter(sql, myConnection)
DataTrcrep.FillSchema(ds, SchemaType.Source, "Trcrep")
'DataTrcrep.Fill(ds, "Trcrep")
'Crea un oggetto CommandBuilder ausiliario per questo DataAdapter
Dim cmdBuilder As New SqlCommandBuilder(DataTrcrep)
' Lo utilizza per generare i tre oggetti xxxCommand.
DataTrcrep.InsertCommand = cmdBuilder.GetInsertCommand
'DataTrcrep.DeleteCommand = cmdBuilder.GetDeleteCommand
'DataTrcrep.UpdateCommand = cmdBuilder.GetUpdateCommand
DataTrcrep.Update(ds, "Trcrep")
myConnection.Close()
End Sub
Piero Longano
ysdemarc
Profilo
| Expert
587
messaggi | Data Invio:
gio 3 nov 2005 - 13:09
Così ad occhio non riesco a darti nel mio possibile qualche soluzione (e non ho tanto tempo per provarlo).
forse non fa nulla poichè leggere un file txt come una tabella le informazioni sui campi non sono le stesse.
Un'altra cosa.. se non ricordo male aavevo cmq avuto dei problemi di aggiornamento passando la stringa sql al dataadapter piuttosto che all'SqlCommand e poi tramite il metodo SelectCommand al dataadapter.
cioè faccio in questo modo (in c#):
//cn è un IdbConnection valido
SqlDataAdapter da = new SqlDataAdapter();
IDbCommand cm = new SqlCommand(sql,(SqlConnection)cn )
da.SelectCommand = (SqlCommand)cm;
SqlCommandBuilder cb = new SqlCommandBuilder(da);
cb.RefreshSchema();
cb.QuotePrefix ="[";
cb.QuoteSuffix = "]";
da.DeleteCommand = cb.GetDeleteCommand();
da.InsertCommand = cb.GetInsertCommand();
da.UpdateCommand = cb.GetUpdateCommand();
ds = new DataSet();
da.FillSchema(ds,SchemaType.Source);
da.Fill (ds);
non so se possa esserti d'aiuto.
ciao
Vincenzo
Programmatore sbilenco :-D
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 !