ASP ODBC koppeling heel veel problemen

Pagina: 1
Acties:
  • 104 views sinds 30-01-2008
  • Reageer

  • PhoneTech
  • Registratie: Mei 2000
  • Laatst online: 19-02 16:25
Ik probeer een ASP bestand te openen die ik heb gemaakt. Maar als ik hem open dan komt er een server load van 100%

De volgende code gebruik ik om de server aan te roepen.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%
   ' maak een database connectie
   set Conn         = Server.Createobject("ADODB.Connection")
   set RS           = Server.Createobject("ADODB.Connection")
   Conn = "DRIVER={Microsoft Access Driver (*.mdb)}; "
   Conn = Conn & "DBQ=" & server.mappath("looneys/data/looneys.mdb")
   ' Open database
   Conn.Open "looneys"

 ' voer de SQL opdracht uit
    Set RS_HEREN1 = Conn.Execute("SELECT * FROM heren1 ORDER BY datum")
    Set RS_TOPSCOORDERS = Conn.Execute("SELECT * FROM topscoorders")


%>

Wat gaat er hier fout. En hoe kan ik dit oplossen?

Mijn host heeft een ODBC koppeling gemaakt en dit zijn de instellingen

DSN naam: looneys
Database pad:looneys/data/looneys.mdb

Wie o Wie kan mij helpen.

Ik kan niet echt veel uitproberen op de server want dan hebben de andere klanten er veel last van als hij een server load van 100% heeft.

  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
2e regel moet waarschijnlijk

set RS = Server.Createobject("ADODB.Recordset")

zijb

  • PhoneTech
  • Registratie: Mei 2000
  • Laatst online: 19-02 16:25
Hoe kan je dit het beste thuis uitproberen dan. Ik heb W2k Professional

Verwijderd

Ik heb geen idee wat er fout gaat , maar ik fok je source gewoon ff 'n beetje naar eigen smaak.
code:
1
2
3
4
5
6
7
8
9
10
11
12
<%   
' maak een database connectie   
set Conn = Server.Createobject("ADODB.Connection")   
set RS   = Server.Createobject("ADODB.Recordset")   
ConnStr = "DRIVER={Microsoft Access Driver (*.mdb)}; "   
ConnStr = ConnStr & "DBQ=" & server.mappath("looneys/data/looneys.mdb")   
' Open database   
Conn.Open Connstr ' of "dsn=looneys"
' voer de SQL opdracht uit  
Set RS_Heren = Conn.Execute("SELECT * FROM heren1 ORDER BY datum")  
Set RS_TOPSCOORDERS = Conn.Execute("SELECT * FROM topscoorders")
%>

wat doet dit?

  • dominic
  • Registratie: Juli 2000
  • Laatst online: 08-02 14:55

dominic

will code for food

Recordset vergeten te definieren, je definieert nu een connectie en die SET je vervolgens naar het resultaat van een query op een andere connectie.. Loooooooooooooooooooooooooooop.. :)

Om dit thuis uit te proberen kun je gewoon gebruik maken van de ingebakken webserver..

Download my music on SoundCloud


  • PhoneTech
  • Registratie: Mei 2000
  • Laatst online: 19-02 16:25
Op donderdag 23 november 2000 10:39 schreef Yarvieh het volgende:Ik heb geen idee wat er fout gaat , maar ik fok je source gewoon ff 'n beetje naar eigen smaak.
code:
1
2
3
4
5
6
7
8
9
10
11
12
<%   
' maak een database connectie   
set Conn = Server.Createobject(&quot;ADODB.Connection&quot;)   
set RS   = Server.Createobject(&quot;ADODB.Recordset&quot;)   
ConnStr = &quot;DRIVER={Microsoft Access Driver (*.mdb)}; &quot;   
ConnStr = ConnStr &amp; &quot;DBQ=&quot; &amp; server.mappath(&quot;looneys/data/looneys.mdb&quot;)   
' Open database   
Conn.Open Connstr ' of &quot;dsn=looneys&quot;
' voer de SQL opdracht uit  
Set RS_Heren = Conn.Execute(&quot;SELECT * FROM heren1 ORDER BY datum&quot;)    
Set RS_TOPSCOORDERS = Conn.Execute(&quot;SELECT * FROM topscoorders&quot;)
%>

wat doet dit?
Hoe zo wat doet dit?

De ASP file moet een mdb bestand uit lezen, daar staat een competitie schema in van een hockey team. Ik heb de DB gemaakt in Access.

Op een PWS 5.0 werkt het perfect, maar als ik het op de host probeer, dan moeten ze de server opnieuw starten. (misschien wel een manier om een vijandige server te laten crashen!)

Verwijderd

Op donderdag 23 november 2000 10:46 schreef PhoneTechnician het volgende:

[..]
Hoe zo wat doet dit?
ik bedoelde werkt dit wel goed?

--Ray

  • PhoneTech
  • Registratie: Mei 2000
  • Laatst online: 19-02 16:25
Dit is de replay van de systeem beheerder:
Bart,

> Ik heb de instellingen aangepast en de asp bestand op de ftp server gezet,
> maar als ik het intyp in mijn browser
> (http://www.looneys.nl/heren1.asp) dan
> krijg ik een 404 error. terwijl hij wel inde ftp directory staat.
> Ik heb de code van het asp bestand toegevoegd.
> zouden jullie misschien kunnen kijken wat er mis is?

Er zal al enige tijd problemen met die server. We hebben nu dus de oorzaak
gevonden. Jou asp file veroorzaakt na het aanroepen hiervan een cpu load van
100% en deze stopt niet meer. Pas wanneer de server gereset wordt werkt de
serevr weer.

Je geeft aan:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%
   ' maak een database connectie
   set Conn         = Server.Createobject("ADODB.Connection")
   set RS           = Server.Createobject("ADODB.Connection")
   Conn = "DRIVER={Microsoft Access Driver (*.mdb)}; "
   Conn = Conn & "DBQ=" & server.mappath("looneys/data/looneys.mdb")
   ' Open database
   Conn.Open "looneys"

 ' voer de SQL opdracht uit
    Set RS_HEREN1 = Conn.Execute("SELECT * FROM heren1 ORDER BY datum")
    Set RS_TOPSCOORDERS = Conn.Execute("SELECT * FROM topscoorders")


%>

Je maakt eerst een connectie naar de database zelf en opent daarna een ODBC
koppeling. Dubbelop dus.

In ieder geval wat het exacte probleem is kunnen wij zo gauw niet vinden,
wel weet ik dat hier van andere klanten al een hoop klachten over zijn
binnengekomen.

Ik wil je dan ook verzoeken onze server niet als test server te gebruiken,
klanten hebben sites draaien waar de complete omzet voor het bedrijf
uitkomt. Dit moet je thuis testen dus niet hier.

  • PhoneTech
  • Registratie: Mei 2000
  • Laatst online: 19-02 16:25
En nog iets:
Ik beken dat ik een ontzettende NEWBIE ben op ASP gebied.

Ik heb een aantal tutorials gelezen op http://www.anterion.com en daarmee de ASP file gemaakt.

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 14:32
Vervang in jouw code dit:
code:
1
set RS          = Server.Createobject("ADODB.Connection")

Maar is met:
code:
1
Dim RS

Niet meer en niet minder, doe het letterlijk, je zult zien dat het perfect gaat. En hoe PWS het wel heeft kunnen accepteren is me een raadsel.

  • dominic
  • Registratie: Juli 2000
  • Laatst online: 08-02 14:55

dominic

will code for food

Jongens, een recordset IS GEEN connectie, set rs = server.createobject("ADODB.RECORDSET") dien je te gebruiken, dan zijn je problemen waarschijnlijk weg!

Gewoon dit:

' maak een database connectie set Conn = Server.Createobject("ADODB.Connection") set RS = Server.Createobject("ADODB.Recordset") Conn = "DRIVER={Microsoft Access Driver (*.mdb)}; " Conn = Conn & "DBQ=" & server.mappath("looneys/data/looneys.mdb") ' Open database Conn.Open "looneys" ' voer de SQL opdracht uit Set RS_HEREN1 = Conn.Execute("SELECT * FROM heren1 ORDER BY datum") Set RS_TOPSCOORDERS = Conn.Execute("SELECT * FROM topscoorders")

Het is al eerder genoemd btw.

Download my music on SoundCloud


  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 14:32
Sorry maar ik heb effe goed gekeken...

D'r klopt geen kloot van je scriptje.. Het is :r Kun je niet lezen man? ;)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%
' maak een database connectie
   set Conn         = Server.Createobject("ADODB.Connection")

   Connstring = "DRIVER={Microsoft Access Driver (*.mdb)}; "
   Conn = Connstring & "DBQ=" & server.mappath("looneys/data/looneys.mdb")
' Open database
   Conn.Open Connstring
' voer de SQL opdracht uit
  Dim RS_HEREN1
  Dim RS_TOPSCOORDERS
  Set RS_HEREN1 = Conn.Execute("SELECT * FROM heren1 ORDER BY datum")
  Set RS_TOPSCOORDERS = Conn.Execute("SELECT * FROM topscoorders")
%>

  • PhoneTech
  • Registratie: Mei 2000
  • Laatst online: 19-02 16:25
Ok. De meningen lopen aardig door elkaar..

Ik heb dus denk ik een fout gemaakt met de RS

Moet ik nu Dim Rs gebruiken of
set RS = Server.Createobject("ADODB.Recordset")

  • dominic
  • Registratie: Juli 2000
  • Laatst online: 08-02 14:55

dominic

will code for food

Ok, doe ik het ff helemaal van scratch:

set objRec = server.createobject("ADODB.Recordset")

strConnect = "Connect shit met dbase"
strSQL = "Query shit"

objrec.open strSQL, strConnect



Connectie wordt automatisch aangemaakt, het connectie object hoef je dus niet per se te defineren

Download my music on SoundCloud


  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 14:32
Kijk mijn reply ietsje naar boven. Vergelijk jou versie met die van mij..

Schrik niet..

Ik had vergeten er de code tags omheen te zetten Door de
code:
1
2
3
4
5
<%

en

%>

werd het niet weergegeven, oeps. :)

  • dominic
  • Registratie: Juli 2000
  • Laatst online: 08-02 14:55

dominic

will code for food

Of MET het connection object:

set objCon = server.createobject("ADODB.Connection")
strConnect = "Connection shit"
objcon.open strConnect
set objRec = Server.CreateObject ("ADODB.Recordset")

Vervolgens Recordset openen:

strSQL = "Query shit"
objrec.open strSQL, objCon

Download my music on SoundCloud


Verwijderd

Ten eerste, als de webserver een 404 fout geeft, is dat mijns inziens een melding dat de server de file helemaal niet kan vinden, of het nou goede code in staat of niet maakt geen drop uit.

Ten tweede, ken je ASP VBScript.

Met Dim declareer je een variabele, d.w.z. je vertelt tegen de interpreter dat je die variabele nodig gaat hebben, zodat die alvast aangemaakt wordt. Hoewel dit in VBScript niet persee moet is het wel aan te raden. Verder kan je afdwingen dat alle te gebruiken variabelen gedeclareerd moeten worden door bovenin je source Option Explicit te zetten.

Met Set ken je een Object toe aan je variabele. De variabele bevat dan een verwijzing naar het object, zodat je de methodes, funkties en properties van dat object kan benaderen. Met Server.CreateObject maak je dat object aan.

Ten derde, ken je ADO objecten.

De drie belangrijke objecten zijn:
1) ADODB.Connection: voor het maken van een connection en instellen van connectie gegevens
2) ADODB.Recordset: voor het ontvangen, bewaren en bewerken van gegevens
3) ADODB.Command: voor het runnen van stored procedures met of zonder parameters, of andere queries

Het verwarrende voor veel mensen is dat de funktionaliteit van de objecten elkaar op bepaalde vlakken overlappen. Zo kun je met een Recordset object een connectie opbouwen, gegevens wijzigen, een query doen die data ophaalt en de connectie weer sluiten zonder een van de andere objecten te gebruiken.

Het voert hier te ver om precies uit te leggen waarom die andere objecten er dan toch zijn, maar het heeft voornamelijk te maken met:
1) efficientie (het delen van resources e.d.)
2) de funktionaliteiten die door een object wordt geboden maar voor de anderen niet

Lees gerust eens verder op http://msdn.microsoft.com/library/psdk/dasdk/ados4piv.htm

Enjoy :)

  • dominic
  • Registratie: Juli 2000
  • Laatst online: 08-02 14:55

dominic

will code for food

Kijk, Ruud weet het altijd beter te verwoorden.. Go Ruud!! :)

Download my music on SoundCloud


  • PhoneTech
  • Registratie: Mei 2000
  • Laatst online: 19-02 16:25
Het is mij eindelijk gelukt om een DB uit te lezen....Iedereen bedankt.

Alleen heb ik nog een klein vraagje...

Ik heb nu een ASP gemaakt waarmee je een recordset kan toevoegen. Ik kan dit op twee manieren doen. Of met add.New of met een SQL statement...Welke is het beste te gebruiken?

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 14:32
Ligt aan je eigen voorkeur en de eisen aan het systeem.

Goeie SQL strings op je DB afvuren werkt veel efficienter dan die standaard calls.

Voordeel van die standaard calls is dat je meestal wat minder tijd kwijt bent met programeren.
Pagina: 1