Memorizzare un dataSet

mercoledì 26 ottobre 2005 - 21.17

Piero Profilo | Newbie

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

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

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

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