Newsgroup: it.comp.lang.visual-basic
Titolo: [.Net][~OT] Accesso esclusivo a SqlServer

Ciao a tutti,
Ho un dubbio.
Il mio è il classico problema del progressivo "globale" salvato in una
tabella di SqlServer.
Questo progressivo dev'essere univoco per tutte le postazioni, le quali lo
leggono e aggiornano.
Ora, per evitare accessi contemporanei mi è sufficente usare le tranzazioni
così
- inizio transazione
- lettura
- scrittura
- fine transazione
o è meglio usare una stored procedure che aggiorni e restituisca il
progressivo?
E come si usano le SP con ADO.Net?
Ciao, grazie
--
Qualunque mentecatto può scrivere codice che un computer possa capire.
I buoni programmatori scrivono codice che gli uomini possano capire.
[Martin Fowler]

 E come si usano le SP con ADO.Net?
Passo: ho cancellato .NET dall'agenda dei miei impegni per ancora 
un bel po' ;-)
-- 
ciao, hal

 [Martin Fowler]
Io lo dico da anni: GoF, POSA, P of EAA e Refactoring... Il resto è (più o
meno) buono per il macero :-)
-- 
.A    [Microsoft MVP .NET]
UGIdotNET - User Group Italiano .NET
http://www.ugidotnet.org
Read my blog at: 
http://blogs.ugidotnet.org/pape

 meno) buono per il macero :-)
L'ho letta in uno degli slide che mi avevi suggerito e mi è piaciuta :)
Ciao

 E come si usano le SP con ADO.Net?
Forse ti puň aiutare:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daab-rm.asp
Ave
giuseppeD
---
CCR 


http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/
daab-rm.asp
Ok, adesso farņ una figuraccia ma non capisco dove sia il problema con la
seguente query (ah, la SP č andata al primo colpo).
OleDbCommand myCommand;
myCommand = new OleDbCommand("INSERT INTO Logs (" +
                            "Utente, DataOra, Descrizione, Gravita) " +
                            "VALUES (" +
                            "@Utente, @DataOra, @Descrizione, @Gravita)",
                            myConnection);
myCommand.CommandType = CommandType.Text;
myCommand.Parameters.Add(new OleDbParameter("@Utente",
Environment.MachineName));
myCommand.Parameters.Add(new OleDbParameter("@DataOra", DateTime.Now));
myCommand.Parameters.Add(new OleDbParameter("@Descrizione", descrizione));
myCommand.Parameters.Add(new OleDbParameter("@Gravita", gravita));
myCommand.ExecuteNonQuery(); // << qui ottengo:
----------
{System.Data.OleDb.OleDbException}
System.Runtime.InteropServices.ExternalException:
{System.Data.OleDb.OleDbException}
ErrorCode: -
2147217900
Message: "Dichiarare la variabile '@Utente'."
message: "Dichiarare la variabile '@Utente'."
Source: "Microsoft OLE DB Provider for SQL Server"
----------
Che cavolo vuole?
Ciao

sara' cosi' anche in .net?
A quanto mi risulta 
Se usi OleDbConnection i parametri hanno segnaposto ?
Se usi SqlConnetion i paramentri hanno il segnaposto "named" con
davanti @
 
=======================================================================
Se mi vuoi scrivere togli le maiuscole
cteniza...@hotmail.com
=======================================================================

 davanti @
A quanto pare per le query ci vuole il '?', per le stored procedure il
@named.
Ciao



ciao
-- 
.A


 trascurabile.
Cio' che mi lascia perplesso su questa bella trovata di 
ADO.NET
 e' che, 
invece di aumentare il livello di astrazione rispetto a, per esempio, 
ODBC, mi pare si complichino le cose :-(
-- 
ciao, hal

 OleDbCommand myCommand;
Se usi SQL Server, conviene utilizzare SqlClient,
l'ho testato, è più veloce rispetto a System.Data.OleDb
Ave
giuseppeD
---
CCR 

 l'ho testato, è più veloce rispetto a System.Data.OleDb
confermo: l'ho sperimentato e d'altra parte dovrebbe essere
.net nativo contro un wrapping di OleDb COM.
-- 
ciao, hal

[Martin Fowler]

Queste differenze sono notevoli?
Io ho usato OleDb per un discorso di indipendenza dalla fonte dati, però se
la differenza si nota si fa presto...
Ciao


L'indipendenza dal db si ottiene (ad esempio) mediante il pattern adapter (o
sue "derivazioni"), come fa il provider model di ASP .NET 2.0 Nelle slide
che ti ho consigliato (in particolare, in qlle della sessione "Design
Patterns applied") trovi un esempio ed anche il codice. Mi rendo conto che
significa fare un po' di upfront design (ossia pensare _prima_ di scrivere
codice) e che possa apparire/essere + oneroso, ma sviluppare del buon
software è tutt'altro che facile.


 la differenza si nota si fa presto...
Quì mi combatto da tempo.
la tentazione è costruire una dll con tanti metodi e utilizzarla per tutte 
le applicazioni.
I tempi di realizzazione dei programmi si abbatte.
Vedo un pericolo, il fossilizzarsi, quindi l'utilizzo forzato della dll, 
quindi progettare l'applicazione intorno alla libreria standard.
Diventare mialibreria.dll dipendente.
Alcune volte ho preferito, piuttosto che utilizzare la dll, aggiungere la 
classe al progetto,
se il programma funziona, non sono legato ad inconvenienti derivanti dagli 
aggiornamenti delle dll.
Ave
giuseppeD
---
CCR 

 non sono legato ad inconvenienti derivanti dagli aggiornamenti delle dll.
Adesso che l'interfaccia della libreria č stabile e i bug conosciuti sono
tutti sistemati č una pacchia. :)
Ciao
--
Qualunque mentecatto puň scrivere codice che un computer possa capire.
