Avatar billede puppetmaster Nybegynder
08. august 2002 - 11:08 Der er 19 kommentarer og
1 løsning

connections og global.asa

Jeg har et lille site bestående af ca. 30 ASP filer, som alle har

Set Con = Server.CreateObject("ADODB.Connection")
Con.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=\\server\mappe\database.mdb"
SQL = "SQL-streng"
Con.Execute( SQL )

Er det ikke muligt at lægge alt det ind i f.eks. global.asa?

Tænker på at oprette f.eks. en variabel som kan indeholde "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=\\server\mappe\database.mdb", så hvis databasen flyttes, skal der kun rettes ét sted....
Avatar billede pelkjaer Nybegynder
08. august 2002 - 11:10 #1
<%
conn_STRING
conn_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../access/db.mdb")
%>
Avatar billede pelkjaer Nybegynder
08. august 2002 - 11:10 #2
Sorry


Dim conn_STRING

i første linje
Avatar billede pelkjaer Nybegynder
08. august 2002 - 11:11 #3
Og så linker du blot med noget ala

<!--#include file="Connections/conn.asp" -->
Avatar billede keysersoze Ekspert
08. august 2002 - 11:12 #4
der er to muligheder du kan gøre

- du kan lægge evt password, sti, brugernavn etc i en aplication i din global.asa

- det som jeg ville gøre var at lave én asp-fil der indeholdt

Set Con = Server.CreateObject("ADODB.Connection")
Con.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=\\server\mappe\database.mdb"

som du så inkluderer de steder du skal bruge dem
Avatar billede kemoiq Nybegynder
08. august 2002 - 11:14 #5
Ved ikke om du kan ligge den i global.asa, men du kan ligge det i en database.inc fil
og inkluder den i asp siden
<!-- #include file="inc/database.inc" -->
Avatar billede bocker Nybegynder
08. august 2002 - 11:38 #6
Tjae, du kunne vel lige så godt lave en DSN til databasen, og så bare smide den i en indclude fil. Du skal bare ikke kalde dem inc til efternavn. Men kald dem asp i stedet. IIS kender ikke inc og behandler den som en almindelig tekstfil, så alle kan hente dine koder :D
Avatar billede puppetmaster Nybegynder
08. august 2002 - 13:33 #7
Kan jeg ikke lave det lidt nemmere, så som at lave en funktion (f.eks. i global.asa), som jeg så kan kalde, som opretter connection-objektet, modtager SQl-strengen og returnerer RecordSet'et?
Avatar billede puppetmaster Nybegynder
08. august 2002 - 13:35 #8
Noget a la http://www.w3schools.com/asp/asp_globalasa.asp

<script language="vbscript" runat="server">sub Application_OnStart
getcustomers
end subsub getcustomers
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
set rs=conn.execute("select name from customers")
Application("customers")=rs.GetRows
rs.Close
conn.Close
end sub</script>
Avatar billede bocker Nybegynder
08. august 2002 - 13:43 #9
Hvad du end gør, så lad være med at tænke på din global.asa til noget der har med databasen at gøre. Og ham, der har lavet det script, har ikke tænkt det helt igennem ... tror jeg ik. Det script der, smider kunderne i en variabel første gang der er en Session på din server, og opdateres først igen, når du starter din server igen. Hvis du så opdaterer databasen, skal du også genstarte din server. Hold dig til include filer.
Avatar billede puppetmaster Nybegynder
08. august 2002 - 13:52 #10
That's true, det gør den, men jeg kunne vel også lægge det i en session_onStart.......hmm............
Det der med include-filer løser ikke rigtig problemet, for <!-- #INCLUDE FILE="fil.asp" --> skal nemlig sættes ind lige nøjagtig der hvor der før stod
Set Con = Server.CreateObject("ADODB.Connection")
Con.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=\\server\mappe\database.mdb"

Jeg ville meget hellere kalde en funktion der så kunne udføre jobbet med at connecte til database og hente RecordSet'ene....
Avatar billede ras2000 Nybegynder
08. august 2002 - 13:58 #11
Du kan sagtens lægge strenge ud i global.asa filen. Den skal bare se sådan her ud:
sub Application_OnStart
    Application("streng1") = "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATASOURCE=\\server\mappe\database.mdb"
End Sub

Så kan du kalde den på dine sider med Application("streng")
Avatar billede ras2000 Nybegynder
08. august 2002 - 13:59 #12
Der skulle selvfølgelig stå Application("streng1") til sidst.
Avatar billede bocker Nybegynder
08. august 2002 - 14:03 #13
Det er stadig meget nemmere at åbne databasen i en include fil, hvorfor begynde at tage det med i application / session ? Det giver slet ingen mening.
Avatar billede puppetmaster Nybegynder
08. august 2002 - 14:15 #14
bocker, her er et eksempel på en af mine filer, hvis jeg bruger din foreslåede include:

<!-- #INCLUDE FILE="header.asp" -->
<%
  user = request("user_id")
%>
<!-- #INCLUDE FILE="DB-config.asp" -->
<%
  SQLDeleteUser="DELETE * FROM Brugere
  Con.Execute( SQLDeleteUser )
  Con.Close
  Set Con = nothing
  Response.Redirect "useradmin.asp"
%>

Det ser ikke for godt ud og eftersom jeg har flere forskellige database knyttet til webstedet, skal der en del includes til, fremfor bare et kald til en funktion i f.eks. global.asa
Avatar billede slamsuger Nybegynder
08. august 2002 - 17:24 #15
Jeg har gjort følgende:

oprettet et inklude fil der hedder connection.inc.asp. I denne fil har jeg lavet en række underrutiner til at connecte, disconnete og hente et recordsæt. inkludefilen inkluderes i toppen af det modul som skal tilgå databasen. Din kode bliver på den måde meget mere overskulig da du ikke skal have INCLUDE sætninger stående blandet med
asp koden.

her er min funktion til at hente et recordsæt:


' ==================================
Function GetRecordset(ByRef strSQL )
  DIM Conn

  Set Conn = ConnectionOpen
  If Err.Number = 0 Then
      Set GetRecordset = Conn.Execute(strSQL)
  Else
      GetRecordSet = Null
  End If
  ConnectionClose(Conn)
End Function

ConnectionOpen og ConnectionClose(Conn) består bare af de normale linier til at åbne og lukke forbindelsen (dem har du jo allerede).
Avatar billede ras2000 Nybegynder
13. august 2002 - 09:41 #16
Hvad var det der var galt med mit svar? Du spurgte hvordan du kunne lægge variable ned i din global.asa, og det forklarede jeg.
Avatar billede bocker Nybegynder
13. august 2002 - 09:49 #17
puppetmaster --> Hvorfor samler du ikke dine data i én database? Anyway, jeg vil stadig benytte include metode, hvor du også sagtens kan åbne flere databaser...
Avatar billede puppetmaster Nybegynder
13. august 2002 - 11:57 #18
Well, slamsuger kommer helt klart nærmest
Avatar billede ras2000 Nybegynder
13. august 2002 - 12:01 #19
Det kan da diskuteres. Jeg valgte at svare på dit spørgsmål, om hvorvidt man kunne lægge en variabel ind i global.asa filen. Det kan man, og så har jeg forklaret hvordan.
Avatar billede ras2000 Nybegynder
13. august 2002 - 12:03 #20
Fordelen med at bruge global asa filen frem for slamsugers øsnign er at du kan have den samme side liggende på flere webhoteller/sites, og så bare have forskellige global.asa-filer.
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
Kurser inden for grundlæggende programmering

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