Bonjour,
Je me trouve devant un problème que je n'arrive pas a résoudre depuis quelques mois.
J'ai une classe SQL (ci-dessous), je l'ai écrite selon un design pattern singleton.
Mais le problème c'est qu'on dirait qu'au bout de 5 construction d'objet le serveur plante.
Je pense que c'est parce qu'il ne me détruit pas mon objet a la fin du script (l'exception est la pour le vérifié), mais il ne le récupère pas lors de l'appel d'une autre page, donc j'ai plusieurs connexion SQL simultané et puis ca doit planté a cause de ça.
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88 Imports Microsoft.VisualBasic Imports System.Data.SqlClient Public Class SQL Private Shared instance As SQL = Nothing Private strConnection As String = Nothing Private connection As SqlConnection = Nothing Private errorMessage As String = Nothing Public Shared Function getInstance(ByVal strconnect As String) As SQL If instance Is Nothing Then instance = New SQL(strconnect) instance.connect() End If Return instance End Function Public Shared Function getInstance() As SQL If instance Is Nothing Then instance = New SQL() End If Return instance End Function Private Sub New() Throw New Exception("on fait le new") Me.strConnection = "Data Source=.\SQLEXPRESS;AttachDbFilename=""C:\Documents and Settings\***\BDD.mdf"";Integrated Security=True;Connect Timeout=30;User Instance=True" End Sub Private Sub New(ByVal strConnect As String) Me.strConnection = strConnect End Sub Private Function connect() As Boolean If Me.strConnection Is Nothing Then Throw New Exception("La chaine de connexion n'a pas été spécifié") End If If Me.connection Is Nothing Then Try Me.connection = New SqlConnection(Me.strConnection) Me.connection.Open() Catch ex As Exception System.Diagnostics.Debug.WriteLine(ex.ToString()) 'On écrit dans le stream de débug Me.errorMessage = ex.Message Return False End Try End If Return True End Function Private Function disconnect() As Boolean If Not Me.connection Is Nothing Then Try Me.connection.Close() Me.connection.Dispose() Me.connection = Nothing Me.errorMessage = Nothing Catch ex As Exception System.Diagnostics.Debug.WriteLine(ex.ToString()) 'On écrit dans le stream de débug Me.errorMessage = ex.Message Return False End Try Return True End If Return False End Function Public Function getError() As String Return Me.errorMessage End Function Public Function query(ByVal strQuery As String) As ArrayList '... Return new ArrayList() End Function Public Function execute(ByVal strQuery As String) As Integer '... Return 0 End Function Protected Overrides Sub Finalize() Throw New Exception("On fait finalize") Me.disconnect() Me.strConnection = Nothing MyBase.Finalize() End Sub End Class
Partager