Avatar billede ashansen Nybegynder
19. september 2006 - 21:39 Der er 6 kommentarer og
1 løsning

Elegant db connection som kan bruges flere gange

Hej

Jeg er netop gået fra ASP til ASP.NET med C# som bagvedliggende sprog.

Jeg er i gang med et site, hvor jeg er nået til databasen.
Jeg har oprettet forbindelse til database og kan læse og skrive til denne.
Det jeg ikke kan få til at virker er at jeg ønsker at dele min database kald op i to metoder.
Den ene metode skal lave databasekaldes og den anden skal lukke forbindelsen igen.

Dette lavede jeg i ASP som to forskellige funktioner, så når jeg skulle åbne min database, skulle jeg blot skrive opendb() og ligeså når denne skulle lukkes, så kunne jeg nøjes med closedb().

Min kode er herunder.
Har i nogen forslag til hvordan jeg kan gribe dette an?

public string SamletStilling()
{
string UdTraekFromDB = "";
int taeller = 1;

OleDbConnection ConnectionString = new
OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"
                + @"Data Source=C:\dysten.mdb");

        try
        {
            ConnectionString.Open();
            OleDbCommand Conn = new OleDbCommand("SELECT Sum(point) As point, deltagernavn FROM dysten_indtastning GROUP BY deltagernavn ORDER BY sum(point) DESC");
            Conn.Connection = ConnectionString;
            OleDbDataReader Data = Conn.ExecuteReader();

            UdTraekFromDB = "Samlet stilling:<br><br>";

            while (Data.Read())
            {
                UdTraekFromDB += taeller + ". " + Data["deltagernavn"] + " har opnået " + Data["point"] + " point.<br>";
                    taeller++;
            }

            Data.Close();
            ConnectionString.Close();
        }

        catch
        {
            return "Fejl i databasekørslen!";
        }

        return UdTraekFromDB;
    }


Mvh

Allan
Avatar billede arne_v Ekspert
20. september 2006 - 01:22 #1
det kan gribes an på mange måder

den mest ASP like vil være at lave en klasse med en statisk GetConnection
metode

men der er mere avancerede metoder

jeg synes at du skulle kigg elidt på at opbygg enogle objektorienterede
database klasser

evt. kigge på Microsoft DAAB
Avatar billede arne_v Ekspert
20. september 2006 - 01:22 #2
og den string akkumulering skal nok erstattes af en ASP.NET web kontrol
Avatar billede arne_v Ekspert
20. september 2006 - 01:23 #3
Avatar billede lateralus Nybegynder
20. september 2006 - 10:17 #4
Kan du ikke bare bruge en using?

using(OleDbConnection ConnectionString = <lav ny OleDbConnection instans>)
{
  // hent data
}

using kalder automatisk Dispose() metoden på OleDbConnection instansen, når kode-blokken er eksekveret. Dette lukker din database forbindelse.
Avatar billede ashansen Nybegynder
25. september 2006 - 21:03 #5
Hej igen

Jeg beklager min sene tilbagemelding - jeg har desværre været forhindret i en periode, beklager...

Jeg har valgt at kigge på objektorienteret db klasser, som arne_v skriver, og kan også se at jeg har nogle forskellige ting inden for .net jeg skal have kigget på.

Indtil videre siger jeg tak for jeres tid, og jeg vender garanteret tilbage med nye spørgsmpl... :D

Skal vi lukke tråden..

Mvh

Allan
Avatar billede arne_v Ekspert
26. september 2006 - 04:05 #6
var det en opfordring til at ligge svar ?
Avatar billede ashansen Nybegynder
26. september 2006 - 09:47 #7
Jep :D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester