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 : Sélectionner tout - Visualiser dans une fenêtre à part
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)

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 : Sélectionner tout - Visualiser dans une fenêtre à part
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)

Erreur : La propriété ConnectionString n'a pas été initialisée
(Recherche.vb: Rechercher(): da.Fill(_Resultats))

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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!