Just nu i M3-nätverket
Jump to content

Databas uppkoppling!!!


april3

Recommended Posts

Hej

 

Försöker enkelt stoppa in värdet "email" i access filen "databas" med följande script men icke sa nicke!!! Den egentliga scripten är mycket mera avancerade med mycket mera innehåll men jag får inte till det eftersom jag skrev dessa script för 2-3 år sedan och att jag har bytt webbhotel så jag undrar om det är sökvägarna jag skriver fel eller om det är någon detalj i scripten som jag missat!

 

Nedan är formen för att skicka värdet "email" till db.asp som ska sätta in "värdet" in i databasen.

==========================

<form action="db.asp" method="post" >

 

Email <input name="Email" type="Text" class="falt">

 

<INPUT TYPE="submit" class="knap" value="Join"></form>

=========================

 

Hur primitiv och enkel som helst!

 

Nu själva databas uppkopplingen:

 

=========================

<!-- #include file="db/adovbs.inc" -->

 

<% Set Connect = Server.CreateObject("ADODB.Connection")

Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=db/databas.mdb"

Set RecSet = Server.CreateObject("ADODB.Recordset")

addera = "SELECT * FROM databas "

RecSet.Open addera, Connect, adOpenStatic, adLockOptimistic

RecSet.AddNew

RecSet("email") = Request.Form("Email")

RecSet.Update

RecSet.Close %>

=========================

 

Nå, vad gör jag för fel?

 

Tack på förhand

 

/ M

 

 

 

 

 

[inlägget ändrat 2005-07-30 22:35:24 av april3]

Link to comment
Share on other sites

1) Sökvägen till databasen verkar lite konstig.

Om du vill använda en relativ sökväg skall du använda Server.MapPath. Annars måste du ange hela sökvägen typ C:\inetpub\www\db\databas.mdb

 

2) Om du "bara" skall ändra (UPDATE) eller lägga till (INSERT) värden i en tabell så är det onödigt att läsa ut hela tabellen i ett recordset först. (se ex.kod nedan)

 

3) Om du skall ändra värden i en tabell så ska du sätta ett vilkor för att ange vilken rad i tabellen som ändringen skall gälla. Annars så ändras alla värden, i angiven kolumn, för alla rader. (se ex.kod nedan)

 

4) Det är bra att stänga/tömma alla objekt så fort som man är klar med dem. (se ex.kod nedan)

 

[MÄRK]<%[/MÄRK] 
strEmail=[color="#0000ff"]Replace[/color]([b]Request[/b].Form([GRÅ]"Email"[/GRÅ]), [GRÅ]"'"[/GRÅ], [GRÅ]""[/GRÅ])

[color="#0000ff"]Set[/color] conn = [b]Server[/b].[color="#0000ff"]CreateObject[/color]([GRÅ]"ADODB.Connection"[/GRÅ])
connStr = [GRÅ]"Provider=Microsoft.Jet.OLEDB.4.0; Data Source="[/GRÅ] & [b]Server[/b].MapPath([GRÅ]"db/databas.mdb"[/GRÅ])
conn.open connStr

conn.[color="#0000ff"]Execute[/color]([GRÅ]"UPDATE tabellen SET Email='"[/GRÅ]&strEmail&[GRÅ]"' WHERE kolumn=någonting"[/GRÅ])

conn.close
[color="#0000ff"]Set[/color] conn=[color="#0000ff"]Nothing[/color]
[MÄRK]%>[/MÄRK]

 

 

/Cluster

------------------------------------------------------------

Ditt vetande är värdelöst om inte andra vet att du vet

-----------> http://eforum.kicks-ass.net <------------

 

Link to comment
Share on other sites

Anjuna Moon

Lite offtopic, men viktig info:

 

så är det onödigt att läsa ut hela tabellen i ett recordset först

Jag skulle vilja använda uttrycket "fruktansvärt onödigt".

 

Det där sättet att arbeta har tyvärr spridit sig från Accessvärlden och är absolut inget man ska nyttja i webbapplikationer. Överhuvudtaget skall man inte använda explicita recordsets annat än när man behöver deras utökade funktionalitet (ex. för pagingfunktionerna)

 

Link to comment
Share on other sites

Fortsätter med lite OT:

Något annat man ofta ser är att folk inkluderar adovbs.inc väldigt slentrianmässigt på alla sidor som har det minsta med databaskopplingar att göra. En del lägger för säkerhets skull in det på alla sina asp-sidor.

Enligt mig helt onödigt. De flesta av dessa konstanter används ju aldrig.

Min adovbs.inc (som jag inte minns när jag använde senast, kanske 2-3 år sedan) tillexempel är på 15kb...

 

 

/Cluster

------------------------------------------------------------

Ditt vetande är värdelöst om inte andra vet att du vet

-----------> http://eforum.kicks-ass.net <------------

 

Link to comment
Share on other sites

Anjuna Moon
Något annat man ofta ser är att folk inkluderar adovbs.inc väldigt slentrianmässigt

Kan bara hålla med förstås. Även om detta för många ses som ren text så är det trots allt något som parsern går igenom, reservererar minne för och inte minst tar upp onödiga cykler för. I små applikationer märks förstås ingen skillnad, men bär man med sig dessa olater in i ett yrkesliv så är man illa ute. Dessutom tjänar det som sagt inget syfte om man inte använder konstanterna.

 

En annan diskussion som vore intressant att ta upp i en egen tråd under lämpligt forum, är hur man ska ställa sig till långa och förklarande variabelnamn osv. i en parse-miljö. Detta använder man förstås för att skapa kod som är förståeligt överförbar mellan programmerare, men det slöar dessutom ned parse-processen.

 

Jag tror på en metod där du mellan produktions- och utvecklingsserver inte bara skalar bort kommentarer utan även använder någon form av variabelomvandlare, så att när applikationen överförs från utv.server till prod.servern så ges hela variabelfloran korta och därmed snabb-parsade namn.

 

System för detta finns säkert, även om jag aldrig använt dem.

 

(Sedan kan man ju förstås kompilera sina script också, men dessa tankar rör situationer där man inte gör det)

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...