INSERT in SQL Server... ADO Command o DATASET ?!

lunedì 06 aprile 2009 - 08.52

enricovirg Profilo | Newbie

Ho un form con circa 50-60 campi....
Sul pulsante "Salva" devo prendere i valori dei campi e inserirli in una tabella di SQLServer...
Ho creato un stringone INSERT sql che passo all'oggetto ADO.net Command e poi eseguo con cmd.ExecuteNonQuery, tutto funge ma vorrei rendere la cosa più "versatile" poichè le stringhe sql scritte in codice non sono il massimo (apici, doppi apici e casini vari).
Pensavo allora all'oggetto DATASET.
Cosi' creo la mia tabella in memoria ,vado ad agire sull'oggetto Row e poi committo il tutto a SQlServer.
Ma chiedo:
per creare un oggetto DATASET devo chiaramente prima popolarlo da un oggetto command, giusto ?
del tipo:
Dim cmd as newsqlcommand("Select * from tabella",cn)
Dim ds as newdataset
Dim da as new sqldataadapter(cmd)
da.fill(ds)

ma se ho una tabella con 1.000.000 di records me la devo caricare tutta in memoria ?????

chi mi da una dritta ?

sanbiz Profilo | Senior Member

>Command e poi eseguo con cmd.ExecuteNonQuery, tutto funge ma
>vorrei rendere la cosa più "versatile" poichè le stringhe sql
>scritte in codice non sono il massimo (apici, doppi apici e casini
>vari).
Direi proprio di no.

>Pensavo allora all'oggetto DATASET.
>Cosi' creo la mia tabella in memoria ,vado ad agire sull'oggetto
>Row e poi committo il tutto a SQlServer.

Io ti consiglerei piuttosto di appoggiarti alle Stored Procedure. In questo modo, quando dovrai aggiornare/salvare/eliminare un record, non farai altro che utilizzare la sp appropriata, passando i parametri necessari.
ES.
'
' Imposto il command
'
Dim cmdSQL As new SqlCommand = miaConnessioneSQL.CreateCommand
cmdSQL.CommandType = CommandType.StoredProcedure
cmdSQL.CommandText = "miaStoredProcedureDiAggiornamento"
'
' Preparo i parametri della sp
'
Dim par As New SqlParameter
par = cmdSQL.Parameters.Add("@PrimoParametro", SqlDbType.TinyInt)
par = cmdSQL.Parameters.Add("@SecondoParametro", SqlDbType.VarChar)
....

'
' Valorizzo i parameters
'
cmdSQL.Parameters("@PrimoParametro").Value = mioValore
...
'
' Eseguo il command
'
cmdSQL.ExecuteNonQuery()


>Ma chiedo:
>per creare un oggetto DATASET devo chiaramente prima popolarlo
>da un oggetto command, giusto ?
Giusto

>ma se ho una tabella con 1.000.000 di records me la devo caricare
>tutta in memoria ?????

Beh se vuoi farti del male... ;-)
Generalmente la parte client dovrebbe essere un briciolo ottimizzata e, in questo caso, filtrare solo i record che ti interessano. Se hai proprio la necessità di scorrerli tutti, potresti creare una sorta di "paginazione" lato client in modo da richiedere, ad esempio, solo un centinaio di record. Quando l'operatore scorrendo i vari record arriverà all'ultimo (il centesimo) effettuerai un'altra select per recuperarne altri 100 a partire dal punto in cui sei arrivato... ma questo è un altro discorso.
--
Sandro Bizioli
http://blogs.dotnethell.it/sandro/

enricovirg Profilo | Newbie

Non sono molto amante delle stored...
Non vedo perchè devo scrivere del codice sul db per poi richiamare la stored nel codice Vb per passare i parametri....se magari domani devo aggiungere un parametro, devo modificare sia la stored sia il codice VB...secondo me è meglio fare tutto nel codice.(poi, bo, magari sono punti di vista...)
Cmq...
Mi sa che una soluzione potrebbe essere crearmi lo schema delle tabelle in XSD...così ho già tutto mappato nel codice e posso richiamare la mia tabella con OggettoTabella.campo = valore
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