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
Connessione ad un db
sabato 31 marzo 2007 - 19.04
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
bluland
Profilo
| Guru
1.149
messaggi | Data Invio:
sab 31 mar 2007 - 19:04
Salve,
mi chiedevo in un applicazione con n form dove tutti si collegano allo stesso db, come è meglio gestire la situazione mica si riscrive per ogni form la stringa di connessione?
saluti
--------------------
Vincenzo PESANTE
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
sab 31 mar 2007 - 20:44
Dai un'occhiata qui:
http://forum.masterdrive.it/showthread.php?t=17070
bluland
Profilo
| Guru
1.149
messaggi | Data Invio:
sab 31 mar 2007 - 20:49
si l'idea è quello che stavo applicando dichiarando una classe Connessione cmq...
avresti un esempio con l'utilizzo in un modulo?
saluti
--------------------
Vincenzo PESANTE
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
dom 1 apr 2007 - 09:36
Beh....sì.... per quello che ti può dire in più. Comunque, ecco un esempio tratto da una delle mie prime applicazioni:
In un modulo:
' -------------------- Connessione Pubblica --------------------------------------------
Public CnnOle As New OleDb.OleDbConnection
Nota che avresti potuto anche limitarti alla dichiarazione, istanziandola (new) solo al momento che decidevi la connessione al DB, ma nel mio caso il programma si connette sempre e quindi, o alle otto o alle dieci, la connessione andava istanziata e poi aperta.
Poi nella frmStart, che è la prima a partire:
Private Sub ApriConnessioneESalvaAttributiDelFile(ByVal StrConn As String)
GIN.CnnOle.ConnectionString = StrConn
GIN.CnnOle.Open()
Dim FileDB As String = GIN.EstraiPathDati(StrConn)
UltimaScritturaQuandoAperto = IO.File.GetLastWriteTimeUtc(FileDB) 'Memorizza quando è stata l'ultima scrittura nel file. Servirà a stabilire se ci sono state modifiche
End Sub
A te interessano solo le prime due righe della procedura. Ovviamente devi aver definito una stringa di connessione, che qui viene passata come parametro. Il prefisso Gin devi ometterlo. E' il nome dello spazio dei nomi di primo livello della mia applicazione.
A questo punto puoi usare la connessione come ti pare e da qualunque form, es.:
Dim StrSQL As String = Inizio & RifTipoDoc & Sep & Data & Sep & NumDoc & Sep & Note & Sep & Avere & Sep & Dare _
& Sep & FNuovo & Sep & NumProg & DOVE
If GIN.EseguiComandoSQL(StrSQL, GIN.CnnOle) = 1 Then
Dim C As New OleDbCommand("SELECT * FROM TabRegistrazioni " & DOVE, GIN.CnnOle)
Dim dr As OleDbDataReader = C.ExecuteReader
dr.Read()
Me.AggiornaItem(dr, Me.ItemSelezionato)
dr.Close()
dr.Dispose()
Me.LsvReg_DoubleClick(Me.LsvReg, Nothing)
Return True
Else
Return False
End If
Come vedi, la connessione è stata prima passata come parametro alla funzione 'EseguiComandoSQL' e subito dopo usata anche localmente e in questa zona, ci troviamo nel codice di una ulteriore Form (FrmRegistrazioni)
Forse è più difficile seguire gli esempi che non dichiarare ( e magari istanziare) la connessione in un modulo e poi, visto che a quel punto è globalmente visibile, usarla tranquillamente. Ovviamente va aperta ed eventualmente richiusa tutte le volte che serve, o anche soltanto all'inizio e alla fine della sessione di lavoro, se come nel mio caso sei l'unico utente di una applicazione con DB Access sulla stessa macchina.
bluland
Profilo
| Guru
1.149
messaggi | Data Invio:
dom 1 apr 2007 - 13:08
Ah si ora mi è chiaro + o - quello che cercavo di fare con una classe
grazie dell'esempio
saluti
--------------------
Vincenzo PESANTE
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 !