ASPDatabaser
[ Hem ] Allmänt ASP XML SQL ADO HTML CSS VB Java Design Karta
Grunder Input/output VBScript Databaser Tips Exempel

Databaser

Access 97 databaser
Access 2000 databaser (MDAC 2.x)
En liten sorglig sak som beör MDAC 2.x

Access 97

Samtliga exempel förutsätter att ni har en fil men namnet connection.asp som skall innehålla följande (OBS! En enda rad)
<%
Const strConn = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=C:\databaser\aspkurs.mdb; DriverId=25; FIL=MS Access; MaxBufferSize=8192; MaxScanRows=8; PageTimeout=5; SafeTransactions=0; Threads=100;"
%>

Allt med kursiv och grön stil kan bortlämnas om man snabbt vill testa och är nöjd med default värdena (som inte alltid är så lyckade)

Om du har satt din databas i en underkatalog till dina websidor kan du använda följande konstruktion:

<%
strConn = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("./databaser/aspkurs.mdb") & " DriverId=25; FIL=MS Access; MaxBufferSize=8192; MaxScanRows=8; PageTimeout=5; SafeTransactions=0; Threads=100;";"
%>
Denna fil kan modifieras vid behov
  1. Ändra databasnamnet och katalogen enligt behov
  2. Har du mindre än 64 MB ram så minska MaxBufferSize från 8192 till 4096
  3. Räknar du med låg belastning kan Threads minskas
(Inställningarna tagna från tester med det ökända VapVal systemet = tål hög momentan belasting. Egentligen vet jag väl inte vad allt betyder, men skit samma, det fungerar!)

Access 2000

Har ni installerat ADO/MDAC 2.x (http://www.microsoft.com/data/) och skapat databsen med Access 2000 använder ni följande konstruktion istället:
<%
Const strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\databaser\aspkurs.mdb;" %>
Eller om du har databasen i en databaser katalog under din site:
<%
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &Server.MapPath("./databaser/aspkurs.mdb") & ";" %>
Observera att denna rad även fungerar med Access 97 men det är ingen större prestandafördel om ni inte har en Access 2000 databas. Detta eftersom OLEDB automatiskt "slår ner" till version 3.5 som i sin tur använder Jet Engine 3.5.

Sök i Visual Studio 6.0 hjälpen eller på microsfts websajt efter "OLE DB Provider for Microsoft Jet" för mer om inställningar i OLEDB

En liten sorglig sak som beör MDAC 2.x

Om du har satt databaserna i en helt separat katalog som inte finns under wwwroot eller din site så fungerar databaserna utan problem, men...

Om du har satt dina databaser i en underkatalog till din site kommer du att få probmel i och med en eventuell uppdatering till MDAC 2.x (2.5 sp1 i mitt fall).
Om du försöker dig på t.ex. följande kod:
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open strConn
strSQL = "UPDATE MY_COUNTER SET my_counter = [my_counter]+1"
Conn.Execute strSQL
%>
så kommer du att få ett glatt meddelande i stil med:

Microsoft JET Database Engine error '80004005'

Operation must use an updateable query. line 12

eller

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver] Operation must use an updateable query. line 12

beroende på om du använde Provider=... eller Driver=...

Lösningen är att man måste göra följande:

  1. Starta NT/Windows Explorern
  2. Sök fram den katalog som innehåller sin site
  3. Välj databaskatalogen
  4. Högerklicka på katalogen och välj Properties
  5. Välj fliken Security
  6. Klicka på Permissions knappen
  7. Sök fram IUSR_xxxxx (Internet Guest Account), där xxxxx är datorn/serverns namn
  8. Om där står Special Access (RX) dubbelklickar du på den raden
  9. Se till att även Write (W) är valt och tag OK
  10. Om IUSR_xxxxx inte finns i listan måste du ta Add
  11. Välj vid behov rätt domän i List Names From och klicka sedan på Show Users
  12. Välj i listan IUSR_xxxxx och klcka på Add
  13. Gör sedan som i punkt 7 ovan
  14. Stäng Permissions dialogen och svara jakande på eventuella frågor om replace ....
  15. Kontrollera för säkerhets skull att Permissions på din .mdb fil är RXW för IUSR_xxxxx

Och detta är ju förstås lätt att utföra på en Internet Providers server ???! Oh, Sweet World...

Varför blir jag nervös över write rättigheterna ??? Se för guds skull till att inte IIS har Write rättigheter. Endast Read behövs. Se mer i artikeln "Untangling Web Security: Getting the Most from IIS Security" i MSDN

Eftersom databasexemplen modifierar en verklig tabell så finns det alltid risken att någon modifierat eller radera allt data. Om så är fallet så finns det här en länk till en sida som kan återställa exempeltabellen [resetDatabase.asp]

Se även db.asp för en beskrivning över exempeldatat

Observera att databasen inte skall finnas i en katalog som har webaccess och absolut inte i samma katalog som de övriga sidorna

  StyrsatserExempeldatatat
Databaser
Exempeldatatat
Snabbkurs i SQL
Enkel listning
Lista hela tabellen
Optimering av databaslistningar
Bläddra några åt gången
Visa mer data om posten
Resultatet av föregående kapitel
Insättning av nya poster
Uppdatering av poster
Radering av poster
Typkontroll
En JavaScript lösning för typkontroll
Resultat från valideringarna
Alternativ lösning för bläddring
Databasexempel
En gästbok
Förklaringar till gästboken
Om du vill se vad som finns i tabellerna...
Databasform
Databasform med Include


Top
< Styrsatser Exempeldatatat>
© Anders Enges, Vörå 2002  | 22.01.01 18:27 Visa asp koden