Newsgroup: it.comp.lang.visual-basic
Titolo: VB.NET - Come gestire i dati?

Sono passato da poco a 
VB.NET
, o meglio lo usavo per alcuni programmi e 
soprattutto per realizzare pagine 
ASP.NET
.
Dopo aver letto alcuni libri (Visual Basic 2005 guida per lo sviluppatore, 
ADO.NET
 2005, Programmare Visual Basic 2005), adesso sto realizzando la mia 
prima applicazione Windows Form basata su database SQLServer 2005 ma vorrei 
capire anche da voi, in base alle Vostre esperienze, qual'è il miglior modo 
per accedere ai dati su applicazioni che devono girare in rete locale con 
max 5 utenti. Tra Dataset, dataset tipizzati, dataadapter, tableadapter 
ecc.. sto diventando matto per capire quali facciano veramente al caso mio.
In VS2005 quando metto una GridView su unWinForm mi vengono generati in 
automatico i seguenti oggett: dataset, bindingsource e tableadapter... la 
mia domanda è questa: posso eliminarli e fare tutto da codice? E' 
conveniente?
In VB6 ho fatto sempre tutto da codice, senza  mai usare un controllo data o 
adodc e in 
VB.NET
 invece mi sembra che qualsiasi cosa faccio mi ritrovo 
oggetti ficcati nel mio form!!!
Ciao, Vincenzo

Io ho creato una mia classe che accede ai dati e l'utilizzo č 
estremamente semplice.
Non so dirti se č una best practice o un accrocchio... so che funziona 
egregiamente e che, per applicazioni monoutente (o per dirla come Wodka 
"poco multiutente") va piů che bene.
Ti posto il codice della classe e come deve essere usata:
************ CLASSE DATABASE ***********
Imports System.Data
Imports System.Data.SQLite
Public Enum TipoConnessione
     DataReader
     DataAdapter
End Enum
Public Class clsDati
     'Stringa di Connessione
     Dim ConnString As String
     'Dim Cn As New OleDbConnection()
     Dim Cn As New SQLite.SQLiteConnection
     Public Property ConnectionString() As String
         Get
             Return ConnString
         End Get
         Set(ByVal value As String)
             ConnString = value
         End Set
     End Property
     Public Function ExecuteQuery(ByVal StringaSQL As String) As 
SQLiteDataAdapter
         Try
             Cn = New SQLiteConnection(ConnString)
             Cn.Open()
             Dim ds As New DataSet
             Dim da As New SQLiteDataAdapter(StringaSQL, Cn)
             ExecuteQuery = da
         Catch ex As Exception
             MessageBox.Show(ex.ToString, "Errore di accesso ai dati")
         Finally
             Cn.Close()
         End Try
     End Function
     Public Sub ExecuteNonQuery(ByVal StringaSQL As String)
         Try
             Cn = New SQLiteConnection(ConnString)
             Cn.Open()
             Dim cmd As SQLiteCommand = Cn.CreateCommand
             cmd.CommandText = StringaSQL
             cmd.ExecuteNonQuery()
         Catch ex As Exception
             MessageBox.Show(ex.ToString, "Errore di accesso ai dati")
         Finally
             Cn.Close()
         End Try
     End Sub
     Public Function App_Path() As String
         Return System.AppDomain.CurrentDomain.BaseDirectory()
     End Function
End Class
************ FINE CLASSE DATABASE ***********
************ ESEMPIO USO **************
Dim Tabella As New clsDati
Dim da As SQLiteDataAdapter 'Se usi Oledb č OledbDataAdapter
Dim DataSet1 as Dataset
Dim sql As String
sql = "SELECT * FROM ElencoClienti"
'La connectionstring cambia in base al db usato io qui uso SQLite
Tabella.ConnectionString = "Data Source=database.db3"
DataSet1.Clear() 'serve a pulire i dataset se č pieno. utile per dataset 
a livello di form
da = Tabella.ExecuteQuery(sql)
da.Fill(DataSet1, "ElencoClienti")
'Leggo un dato
DataSet1.Tables("ElencoClienti").Rows(0)("Nome").ToString
'Cambio un Dato
DataSet1.Tables("ElencoClienti").Rows(0)("Nome") = "Nicola"
'Salvo le modifiche
Dim cmdBuild As New SQLiteCommandBuilder(da)
' Assegniamo i comandi generati al nostro DataAdapter
da.UpdateCommand = cmdBuild.GetUpdateCommand()
'Infine eseguiamo i comandi assegnati con la riga precedente.
da.Update(DataSet1.Tables("elencoclienti"))
E poi il resto viene da sč. Righe e righe di codice da scrivere.
Magari vorrei capire, da chi č piů esperto, se il mio approccio ai db in 
.NET va bene o č una lamerata.
bye

Grazie per la risposta Nicola.
Sto cercando di tirar su un programmino che gestisce delle statistiche, 
saranno si e no una decina di tabelle.
Diciamo che tra le varie letture e il materiale su internet, l'applicazione 
sta venendo su. Volevo capire perň, come si orienta uno sviluppatore .NET 
piů esperto di me nella gestione dei dati avendo a disposizione vari 
strumenti.
Ciao, Vincenzo