Toon posts:

[vb.net] Globale variabele beschikbaar over hele applicatie

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een applicatie met een aantal classen. Ik maak gebruik van een access database.

Alleen is het soms langzaam, de connectie dan, en lijkt het net alsof je met meerdere mensen op de database zit zeg maar. Dus als ik iets toevoeg dat het pas na een paar secode in een ander formulier zichtbaar wordt.

Nu zou ik het fijn vinden als ik dus op 1 plek die connectie kon openen en hem dan overal kon gebruiken, maar zonder dat ik die steeds moet meegeven aan functies.

Is dat mogelijk?

Ik heb wel iets voorbij zien komen hier over delegates, maar dat is volgens mij niet wat ik zoek. Want zoals ik het begreep moet je dan toch steeds dingen gaan meegeven. en ik wil gewoon in een class queries kunnen uitvoeren op een connectie die al open staat voor me... of kan dat dus alleen dmv doorgeven ofzo?

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Je kan een singleton DB class oid maken die de connectie bevat die je steeds gaat hergebruiken.

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

whoami schreef op 16 februari 2004 @ 11:02:
Je kan een singleton DB class oid maken die de connectie bevat die je steeds gaat hergebruiken.
Een singleton voor je databaseconnectie? Je gebruikt toch standaard connection pooling? Moet je alleen wel netjes steeds je connecties sluiten :)

[ Voor 10% gewijzigd door gorgi_19 op 16-02-2004 11:03 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
gorgi_19 schreef op 16 februari 2004 @ 11:03:
[...]

Een singleton voor je databaseconnectie? Je gebruikt toch standaard connection pooling? Moet je alleen wel netjes steeds je connecties sluiten :)
Idd dat moet je wel doen.
Misschien is die singleton wel overdreven, maar als je slechts 1 connectie wilt, dan kan je dat daarmee doen.

Anders maak je 'm gewoon static in eeoa class.

https://fgheysels.github.io/


Verwijderd

Topicstarter
singleton db class -> Ik ga ff uitzoeken wat dat precies inhoudt...

connection pooling, zegt me eigenlijk ook niks..., maar steeds sluiten? waarom kan ik hem niet gewoon openhouden tot de user het programma afsluit?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

whoami schreef op 16 februari 2004 @ 11:05:
[...]


Idd dat moet je wel doen.
Misschien is die singleton wel overdreven, maar als je slechts 1 connectie wilt, dan kan je dat daarmee doen.

Anders maak je 'm gewoon static in eeoa class.
Ik vraag me af waarom je slechts 1 connectie wilt. Ik denk juist dat dit performance degrading is ipv verbetering.
connection pooling, zegt me eigenlijk ook niks..., maar steeds sluiten? waarom kan ik hem niet gewoon openhouden tot de user het programma afsluit?
In de tijd dat je hem niet gebruikt, geef je hem terug aan de connectionpool, waarna de connectie ook gebruikt kan worden voor andere requests.

[ Voor 28% gewijzigd door gorgi_19 op 16-02-2004 11:07 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Nou er gebeurt niet echt heel erg veel. Er wordt iets aangeklikt-> gegevens ophalen.

Of in een een ander formulier wordt iets toegevoegd.

Maar dat connection pooling klinkt wel interessant, maar kun je die ergens aanmaken en dan overal aanspreken zonder iets mee te geven? Anders moet ik nl. al mijn functies gaan aanpassen, en het lijkt me ook zo omslachtig...

  • Remco
  • Registratie: Januari 2001
  • Laatst online: 21-05 08:21
Je kan ook een connectie module maken:
Visual Basic:
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
Module connect
    Public Connectie As SqlClient.SqlConnection
    Public Connectiestring As String
    Public config As Configuration.ConfigurationSettings


    Public Sub connect()
        Try
            ' Create the Connection object
            Connectie = New SqlClient.SqlConnection
            ' Build the connection string
            Connectiestring &= "server="
            Connectiestring &= config.AppSettings("server")
            Connectiestring &= "; Initial Catalog="
            Connectiestring &= config.AppSettings("tabel")
            Connectiestring &= "; User ID="
            Connectiestring &= config.AppSettings("userid")
            Connectiestring &= "; Password="
            Connectiestring &= config.AppSettings("password")

            ' Set the Connection String
            Connectie.ConnectionString = Connectiestring

        Catch oExcept As Exception
            MessageBox.Show(oExcept.Message, _
             "btnConnect_Click()")

        End Try

    End Sub

End Module

je kan nu met
Visual Basic:
1
2
3
connect.connect
connectie.open
connectie.close

alles regelen.
En in je config van je app:
Visual Basic:
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="server" value="server01" />
<add key="tabel" value="tabelnaam" />
<add key="userid" value="gebruiker" />
<add key="password" value="wachtwoord" />
    </appSettings>
</configuration>

Dan heb je ook meteen een mooi .ini filetje

The best thing about UDP jokes is that I don't care if you get them or not.


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Connection pooling gebeurt automatisch (in Sql Server dan). Als je het niet wilt gebruiken moet je het expliciet aangeven in je connection string.
Hoe het in Access gebeurt weet ik niet (als het daar al mogelijk is).

Als je connection pooling wilt gebruiken moet je er gewoon voor zorgen dat je je connectie sluit van zodra je ze 'even' niet meer nodig hebt. (Je moet ze natuurlijk niet na iedere request gaan sluiten, als je weet dat je direct erna nog eens die connectie nodig hebt).
Je moet er ook voor zorgen dat je altijd identiek dezelfde connectie-string gebruikt. Daarom zet je die connectie-string dus best in een config file.

gorgi_19:
Je hebt wel gelijk ivm die ene connectie hoor.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ik las net ergens op internet dat Acces geen connecion pooling kent.

Ik ga dat van die module eens uitproberen.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 16 februari 2004 @ 11:36:
Ik las net ergens op internet dat Acces geen connecion pooling kent.
:?
Q. Can I enable connection pooling with the Microsoft Access driver because the connection pooling is implemented in the driver manager?

A. You can enable connection pooling for Microsoft Access driver. Microsoft Access uses Jet, and Jet is thread safe starting from Jet 4.0. From MDAC 2.1 and later, you can have connection pooling for Access ODBC driver.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Windows DNA teaches us that all objects should be created, used, and destroyed as soon as possible in order to free up resources on the server. With connection pooling via IIS, we allow IIS to manage the physical database connections for us after we release the connection and objects in our code. IIS can then simply hand the existing connection off to another user again without the normal overhead. As a side note, Microsoft Access does not take advantage of connection pooling. With a smaller number of visitors as sites using MS Access would have, this methodology still applies without a performance hit.
Daar las ik dat dus,...

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

Welke MDAC versie hebben ze het daar over? Maar goed, je moet maar zelf kijken wat je doet :)

[ Voor 38% gewijzigd door gorgi_19 op 16-02-2004 11:50 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1