Classe di Accesso ai Dati

mercoledì 29 settembre 2004 - 10.24

Leo Profilo | Junior Member

Buongiorno a tutti!
Sto cercando di fare una classe per l'accesso ai dati , volevo un vostro consiglio considerando chenon ho molta esperienza con le classi e sono bene quanto siano fondamentali in .net.
allora per prima cosa nella classe setto le proprieta' della connessione al database , quindi il database,datasource,utente,password in questo modo :

Public Class Connection
Private sProvider As String
Private sDataSource As String
Private sDatabase As String
Private sUserID As String
Private sPassWord As String

Public WriteOnly Property Provider() As String
Set(ByVal Value As String)
sProvider = Value
End Set
End Property

Public Property DataSource() As String
Get
Return sDataSource
End Get
Set(ByVal Value As String)
sDataSource = Value
End Set
End Property

Public Property DataBase() As String
Get
Return sDatabase
End Get
Set(ByVal Value As String)
sDatabase = Value
End Set
End Property

Public WriteOnly Property UserID() As String
Set(ByVal Value As String)
sUserID = Value
End Set
End Property

Public WriteOnly Property PassWord() As String
Set(ByVal Value As String)
sPassWord = Value
End Set
End Property

Poi successivamente ho fatto una funzione che costruisce la riga di connessione a seconda del provider :
Public Sub SetProvider()
If sProvider = "MYSQL" Then
ConnString = "Data Source=" + sDataSource + ";Database=" + sDatabase + ";" + "User ID=" + sUserID + ";Password=" + sPassWord + ";"
End If
If sProvider = "ACCESS" Then
.......
End If
If sProvider = "SQLSERVER" Then
........
End If
End Sub

E poi le 2 funzioni che utilizzo per l'apertura e chiusura del database :

Public ConnString = "Data Source=" + sDataSource + ";Database=" + sDatabase + ";" + "User ID=" + sUserID + ";Password=" + sPassWord + ";"
Public Conn As New MySqlConnection(ConnString)

Public Sub Open()
Try
Conn.Open()
Catch err As MySqlException
Write(err.Message, err.ToString, err.Source)
End Try
End Sub

Public Sub Close()
Try
Conn.Close()
Conn.Dispose()
Catch Err As Exception
Dim u As New Log
u.Ins(Err.Message, Err.ToString, Err.Source)
End Try
End Sub

Ecco il problema e' questo, dop che all'apertura del progetto ho inizializzato la classe con tutti i suoi dati quando poi la vado ad utilizzare per aprire la connessione i dati che gli ho passato (database,provider,utente,password...) non ci sono piu' .. come faccio per memorizzarli definitivamente all'interno della classe ??
io inizializzo la classe in un SubMain in questo modo :

Public Sub main()
Dim odbc As New connection
odbc.Provider = "MYSQL"
odbc.DataSource = "127.0.0.1"
odbc.DataBase = "test"
odbc.UserID = "root"
odbc.PassWord = ""
odbc.SetProvider()
Application.Run(New MainForm)
End Sub

Vi sembra corretto tutto questo?
Avete dei sufferimenti e costruire una classe di questo tipo ?
Come faccio a memorizzare i parametri settati all'inizio?

Vi ringrazio per qualsiasi risposta!!
ciao
Mirco

LeonDom Profilo | Senior Member

Mi pare che manchi qualcosa nella classe... ????
Io di solito inserisco una Sub New(parametri) che inserirai nelle var_membro.

Sub New(parametri)
MyBase.New()
m_variabile_1
m_variabile_2
m_variabile_3
etc etc
End Sub

In questo modo i parametri che passi alla tua classe saranno nelle variabili membro.

LeonDom

LeonDom Profilo | Senior Member

Mi sono scordato un pezzo:

Sub New(parametri)
MyBase.New()
m_variabile_1 = par_1
m_variabile_2 = par_2
m_variabile_3 = par_3
etc etc
End Sub


bye
LeonDom

Leo Profilo | Junior Member

Ciao LeoDom,
scusami ma questo pezzo lo inserisco nella classe che ho fatto oppure quando la richiamo ?
e come gli passo i parametri ?
scusa la banalita' delle domande .. ma sono confuso!!
ciao e grazie!
Mirco

LeonDom Profilo | Senior Member

Anche io sto come te... ma già ho avuto lo stesso problema.

Questo pezzo di codice è esatto, dichiari le variabili membro che conterranno i dati che gli passerai da codice...

Public Class Connection

Private sProvider As String
Private sDataSource As String
Private sDatabase As String
Private sUserID As String
Private sPassWord As String

poi devi metter un costruttore della classe: e cioè il codice che ti ho scritto prima:

Sub New(par_1 as string, par_2 as string, par_3 as string)
MyBase.New()

m_variabile_1 = par_1
m_variabile_2 = par_2
m_variabile_3 = par_3

End Sub

In questo modo inizializzi le tue variabili membro con i parametri che gli passi:

dim miaClasse as new Connection

e così via....

Spero di essermi spiegato...

LeonDom


Leo Profilo | Junior Member

ok LeonDom, ho capito .. e scusami se insisto .. ma tanto per essere chiri al posto di Par_1 che passo al costruttore , gli passo per esempio il provider (nel mio caso sProvider) e poi lo associa alla variabile m_variabile_1

Sub New(Provider as string, DataSource as string, DataBase as string)
MyBase.New()

m_variabile_1 = Provider
m_variabile_2 = DataSource
m_variabile_3 = DataBase

End Sub

Giusto cosi'?
ciao e grazie di tutto!!!

Mirco

LeonDom Profilo | Senior Member

Esatto...!!!

Prova così...

LeonDom
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