Problème de porté de variable et StackOverflow
Bonjour,
Je développe actuellement une classe pour un moteur de recherche dans une application ASP.net en VB.net. La classe utilise "SqlConnection" pour se connecter à la BD.
Classe Recherche.vb
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
Imports System.Data.SqlClient
Public Class Recherche
#Region " Implémentation privée "
'Input
Private _Connection As New SqlConnection()
[...]
'Output
Private _Resultats As New DataSet()
#End Region
#Region " Constructeurs "
Sub New()
End Sub
Sub New(ByVal value As String)
Me.New()
Me.ConnectionString = value
End Sub
#End Region
#Region " Propriétés publiques "
WriteOnly Property ConnectionString() As String
Set(ByVal value As String)
_Connection.ConnectionString = value
End Set
End Property
[...]
ReadOnly Property Resultats() As DataSet
Get
Return _Resultats
End Get
End Property
#End Region
#Region " Procédures publiques "
Public Sub Connecter()
_Connection.Open()
End Sub
Public Sub Deconnecter()
If ConnectionState.Open Then
_Connection.Close()
End If
End Sub
Public Sub Rechercher()
Dim da As New SqlDataAdapter()
Dim query As New SqlCommand()
With query
.Connection = _Connection
.CommandType = CommandType.Text
.CommandText = [...]
End With
_Resultats.Clear()
da.SelectCommand = query
da.Fill(_Resultats)
End Sub
#End Region
#Region " Desctructeur "
Protected Overrides Sub Finalize()
Me.Deconnecter()
MyBase.Finalize()
End Sub
#End Region
End Class |
Cependant, je reçoit toujours une erreur StackOverflow si j'essaie de déclarer mon objet en private dans le haut de la partie code de ma page recherche.aspx (donc dans recherche.aspx.vb)
Citation:
Erreur : Une exception non gérée du type 'System.StackOverflowException' s'est produite dans MonProjet.DLL
Tout ça à la contruction de ma classe recherche (dans le New())
Recherche.aspx.vb
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
Imports MonProjet.Recherche
Partial Public Class Recherche
Inherits System.Web.UI.Page
Private Recherche As New Recherche()
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Me.IsPostBack Then
Recherche.ConnectionString = Application.Get("Connection")
Recherche.Connecter()
End If
End Sub
Private Sub btnRechercher_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnRechercher.Click
Recherche.Rechercher()
End Sub
End Class |
Sinon, en admettons que je réussirais (ici pour pallier, je le redéclare pour chaque fonction, je reçoit une autre erreur)
Citation:
Erreur : La propriété ConnectionString n'a pas été initialisée
(Recherche.vb: Rechercher(): da.Fill(_Resultats))
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
Imports MonProjet.Recherche
Partial Public Class Recherche
Inherits System.Web.UI.Page
'Private Recherche As New Recherche()
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Me.IsPostBack Then
Dim Recherche As New Recherche()
Recherche.ConnectionString = Application.Get("Connection")
Recherche.Connecter()
End If
End Sub
Private Sub btnRechercher_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnRechercher.Click
Dim Recherche As New Recherche()
Recherche.ConnectionString = Application.Get("Connection")
Recherche.Connecter()
Recherche.Rechercher()
End Sub
End Class |
Pouvez-vous m'aidez, merci beaucoup!