Avatar billede wwwbolig Nybegynder
12. marts 2002 - 19:48 Der er 18 kommentarer og
2 løsninger

Forbindelse til database

Hejsa

Jeg er lige begyndt at kigge på ASP.NET (koder C#) og har nogen spørgsmål til hvordan man bedst forbinder til sin database (i mit tilfælde Oracle).

Hvilken måde er bedst at lave forbindelse til databasen? er det ved at åbne en forbindelse i global.asax og benytte den eller at åbne en ny forbindelse hver gang (og selvfølgelig huske at lukke igen) man skal bruge basen?

Håber der er nogen der har nogen gode forslag til hvordan jeg gør det bedst, meget gerne med eksempler.
Avatar billede odegaard Nybegynder
12. marts 2002 - 20:23 #2
Hovsa. Ville også lige have nævnt www.123aspx.com som er et vidunderlig søgemaskine for os .NET'ere :-)
Avatar billede nute Nybegynder
12. marts 2002 - 20:25 #3
tja...du kan jo starte med å kikke på denne link:

http://www.c-sharpcorner.com/database/ConnectToOracleDB.asp

ved bruk av .NET, så får man muligheten til å legge recordsets i minnet til serveren, såkalt disconnected recordset. Dette er et recordset som du fx. kan knytte mange klienter til, for på den måten å nettopp slippe for å åpne og lukke forbindelsen til db'en hele tiden.

En annen ting er at db forbindelse er rimelig optimert i .NET. JEg er ikke sikker på hvordan oracle er understøttet, men ved bruk av SQL Server så er iallefall connection pooling innebygget pr connection string, så man slipper nærmest å tenke på optimal db forbindelse.

Kikk litt i dokumentasjonen under 'ADO.NET', så får du gjerne svar på  noen spørsmål...

/nute
Avatar billede wwwbolig Nybegynder
12. marts 2002 - 20:35 #4
Hejsa begge to

Tak for de gode links, kendte et par af dem i forvejen :-)

Det jeg egentlig tænkte på, var hvordan man på den bedste måde opretter forbindelse til databasen - jeg finder det f.eks. ikke
særlig hensigtsmæssigt at have følgende stående 20+ steder i ens applikation:

//Forbindelse til database
const string strConn = "Provider=OraOLEDB.Oracle;Data Source=db_navn; User ID=XXX; Password=XXX";
OleDbConnection con = new OleDbConnection(strConn);
con.Open();

con.Close();

Hvordan gør i det? - har i funktion i kalder hver gang eller kører jeres forbindelse til databasen som ApplikationsSession eller??

Håber i forstår :-)
Avatar billede nute Nybegynder
12. marts 2002 - 20:37 #5
lag en klasse med en metode som returnerer en db connection. Deretter trenger du kun å kalle denne metode (1 linje) for å få fatt i din connection

/nute
Avatar billede odegaard Nybegynder
12. marts 2002 - 20:43 #6
Du laver en application-variabel med din connectionstring, og så genbruger du denne. Så skal du kun ét sted (global.asax), ændre strengen. Dette er MÅDEN at gøre det på.
Et alternativ som jeg udelukkende bruger, et at lave en DLL som står for AL kommunikation med databasen. Så er det kun i DLL'en det skal ændres.
Du kan f.eks. oprette dit DLL objekt ved application-start, og derved holde forbindelsen åben (hvis du altså åbner forbindelsen i DLL-koden ved instantiering af objektet).
Avatar billede nute Nybegynder
12. marts 2002 - 20:50 #7
odegaard >>hmmm...skriver du ikke litt mot deg selv ?

<snip>
Så skal du kun ét sted (global.asax), ændre strengen. Dette er MÅDEN at gøre det på
</snip>

men allikevel skriver du at du utelukkende gjør noe annet. Hvorfor ?

Jeg er helt enig i å legge kommunikasjonslaget inn i en .dll og dette er også måten jeg gjør det på, men hvorfor motsier du seg selv ? Eller er det bare meg som misforstår ??

/nute
Avatar billede wwwbolig Nybegynder
12. marts 2002 - 21:47 #8
Hej Nute

Når jeg har lavet en klasse, som returnere en db connection (laver den i en selvstændig fil), hvordan inkludere jeg den så på alle mine .aspx sider?

i almindelig ASP brugte man include filer - kan man også det i asp.net?
Avatar billede odegaard Nybegynder
12. marts 2002 - 23:07 #9
Nute: Det er MÅDEN, hvis man ikke ønsker at lave DLL'er :-)

Men stadig er det vel egentlig måden, eftersom man tit har et udviklingssite og et færdigt site (med hver sin connectionstring), og det ikke er fedt med to forskellige DLL'ere. Så hellere to forskellige web.config/global.asax

Jeg har bare ikke lige gidet finde ud af hvordan jeg får fat i session og application-variabler inde fra DLL'en. :-)
Avatar billede nute Nybegynder
13. marts 2002 - 09:38 #10
odegaard >> ahhh...så er vi enige :) Og det er også fornuftig å legge connection opplysninger i en ekstern konfigurasjonsfil, sånn at men ikke skal recompile hvis man skal legge noe på sitt live-site. Dette er også en måte jeg arbeider på.

wwwbolig >> kanskje denne lille "guide" kan hjelpe:

1) opprett en fil (Test.cs) og legg dette inn i den:

using System;
namespace MyTest{
    public class Test{
        private String myString;
        public Test(){
            myString = "Hei Hei";
        }
       
        public String getString(){
                return myString;
        }
    }
}

2) compiler filen med:

csc /target:library Test.cs

3) kopier Test.dll filen over i 'bin' katalogen under din webserver (hvis du ikke har denne katalog, så opretter du den bare.

4) opprett en vilkårlig .aspx fil og legg dette innhold i den:

<%@ Page Language="C#" Debug="true" %>
<%@ import Namespace = "MyTest" %>
<html>
<head>
</head>
<body>
<%
Test t = new Test();
Response.Write( t.getString() );
%>
</body>
</html>

/nute
Avatar billede odegaard Nybegynder
13. marts 2002 - 11:07 #11
Er det ikke lidt overkill at lave en DLL-funktion til at retunere connectionstring ??!?
Jeg forstår ikke hvorfor du vil igennem en DLL, når du ligeså godt kan bruge en application-variabel. Så slipper du både for compiling, en masse overflødig kode, og instantiering af objektet hver gang du skal bruge det.
Avatar billede odegaard Nybegynder
13. marts 2002 - 12:00 #12
Jeg forstår ikke helt hvor du vil igennem besværet med at lave en DLL der returnerer connectionstring. En application-variabel kan klare det samme, og det med 1½ linje kode. Og så slipper du også for at instantiere dit DLL objekt.
Avatar billede odegaard Nybegynder
13. marts 2002 - 12:01 #13
hmm.... og så kom min forrige besked alligevel - Mystisk! men så har jeg da fået formuleret mig på hele to måder :-)
Avatar billede nute Nybegynder
13. marts 2002 - 12:05 #14
nja...en klasse som returnerer en SqlConnection er det jeg benytter. Hvor jeg får connectionstringen fra er jo forsåvidt likegyldig. Man kan jo bare lage en static metode som returnerer en Connection, så slipper man jo for instansiering...
Avatar billede wwwbolig Nybegynder
29. marts 2002 - 23:13 #15
nute opretter du ikke lige et svar :-)
Avatar billede nute Nybegynder
30. marts 2002 - 13:01 #16
svar :)
Avatar billede wwwbolig Nybegynder
02. april 2002 - 17:47 #17
Hej Nute

Lige et sidste lille spørgsmål - kan det passe at det ikke er muligt at lave en Response.Redirect inde i den dll jeg opretter?

fejlbesked:

The type or namespace name 'Response' could not be found (are you missing a using directive or an assembly reference?)
Avatar billede odegaard Nybegynder
02. april 2002 - 17:58 #18
Ja. En DLL har vel så vidt jeg ved intet med hjemmesider at gøre.
Men der er vist en anden funktion man kan bruge (kan ikke lige huske hvilken, men den hedder noget med ".write" til sidst).
Avatar billede wwwbolig Nybegynder
02. april 2002 - 18:25 #19
oki :-)
Avatar billede nute Nybegynder
05. april 2002 - 19:33 #20
Joda...du kan benytte Response/Request inne i en .dll, du skal bare passe på å bruke det i en metode som eksekveres *etter* at 'Page' objektet er tilgjengelig

/nute
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