Jag har hållt på att lära mig i asp i några dagar nu ifrån en guide som www.idg.se har gjort du måste ge IUSR_Datornamn skrivrättigheter, gör en sökning i formet så hittar du hur du gör. Som Anna-Karin skriver, det är rättigheterna som gäller. Om du bygger ihop sql-strängen själv så se verkligen till att validera all indata. Annars är du garanterat sårbar för sql-injection attacker. Morgan Om du kollar mina Artikel [Ett Administrations script för webb baserad databas Del 1] så får du en liten hint.Problem med databas
När jag kör följande kod:
<% Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\inetpub\wwwroot\databas\adressbok.mdb"
Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM adressbok"
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
RecSet.AddNew
RecSet("Fornamn") = Request.Form("fornamn")
RecSet("Efternamn") = Request.Form("efternamn")
RecSet("Adress") = Request.Form("adress")
RecSet.Update
RecSet.Close
Connect.Close %>
Får jag följande error:
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][Drivrutin för ODBC Microsoft Access] Det går inte att uppdatera. Databasen eller objektet är skrivskyddat.
/databas/add.asp, line 19
Det är alltså RecSet.Update det är något fel på. Jag tror det är fel på mina inställningar i databasen har någon nån ide hur man fixar detta?. Jag kör för övrigt Access 2000 och exemplet ovan är taget ifrån http://www.idg.se/webstudio/pub/article.asp?id=116 Sv: Problem med databas
//Anna-KarinSv:Problem med databas
Men jag tänkte att jag skulle visa dig lite mera.
Låt oss börja med connection:
<code>
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & server.MapPath("adressbok.mdb")
</code>
Denna connection-string använder Jet.OLEDB och är betydligt snabbare och bättre än den driver som du
använder.
Sen när du anropar en SQL, använd INTE "*" (astrix). Det är betydligt effektivare att tala om vad man
vill ha, när man anropar en databas.
Sen, att använda sig av ett recordset när man skall lägga till en ny post(eller uppdatera) är heller inget vidare.
Det finns väldigt mycket som talar för hur dåligt det är, men låt mig istället visa hur jag rekommendera att du skall göra.
<code>
SQL = ("Insert INTOadressbok(Fornamn,Efternamn,Adress)VALUES( '" & Request.Form("fornamn") & "','" & Request.Form("efternamn") & "'," & Request.Form("adress") & " )")
Connection.Execute(SQL)
Connection.Close
</code>
Detta är en snabbare effektivare snyggare lösning än med rekordset.
Skall det här vara riktigt bra, så bör du ha variabler istället för request.form i SQL:en, och desutom en felhanterare.
Läs gärna igenom min Artikel [Ett Administrations script för webb baserad databas Del 1] för mera info.Sv: Problem med databas
Sv:Problem med databas
Kan du ge något exempel på validering. Jag har i mina input till databasen lagt en replace på ' (enkelfnutt) vad mer bör man göra?Sv: Problem med databas