webForumDet fria alternativet

Varför funkar inte detta databasansrop?

.NETur .NET

6 svar · 347 visningar · startad av weedogt

weedogtMedlem sedan mars 200427 inlägg
#1

Hej,
Jag har installerat ASP.NET 1.1 på min WinXP och det funkar bra. Jag har också intallerat Web Matrix som editor vilket också funkar bra.

Mitt problem är att den server som följde med ASP.NET genererar ett fel som inte förekommer när jag använder den server (WebServer.exe) som följde med Web Matrix.

Så här ser min kod ut:

         Dim cn As OleDbConnection
         Dim cm As OleDbCommand
         dim dblink as string
         Dim sql As String

         sql = "UPDATE issues SET status='1' WHERE ID='2'"

         dblink="C:\\Inetpub\\wwwroot\\db\\issues.mdb"
         cn = New OleDbConnection( "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & dblink & ";")
         cm = New OleDbCommand(sql, cn)
         cn.Open()
         **cm.ExecuteNonQuery()**  *\<\< Här stoppar det!*
         cn.Close()

När jag kör med WebServer.exe aktiverat funkar det utmärkt. Men nar jag kör med den "vanliga" ASP.NET 1.1 servern så får jag följande fel:

Exception Details: System.Data.OleDb.OleDbException: Operation must use an updateable query.

Jag har provat att köra samma kod på en annan WinXP maskin med samma(?) ASP.NET installation och då funkar det i båda fallen. Att Läsa från databasen funkar dock alltid på båda maskinerna.

Frågor:
Är min kod inte bra?
Har jag bommat någon inställning tex i IIS i den maskin där det inte funkar?

Tacksam för tips!

TravoniMedlem sedan okt. 20041 556 inlägg
#2

Om fälten status & ID är av numerisk typ skall din sträng se ut så här:
sql = "UPDATE issues SET status=1 WHERE ID=2"

weedogtMedlem sedan mars 200427 inlägg
#3

Travoni skrev:

Om fälten status & ID är av numerisk typ skall din sträng se ut så här:
sql = "UPDATE issues SET status=1 WHERE ID=2"

Min fält är stängar, så sql statsen funkar hur bra som helst.

Det är vid själva anropet av databasen som det sker något. Jag tror att det handlar om ett problem med skrivrättigheter eller likande. Jag har dock inte lyckats bena ut "vilken knapp jag ska trycka på" för att att få till det.

TravoniMedlem sedan okt. 20041 556 inlägg
#4

Du måste se till att IUSR har skrivrättigheter på din databasmapp.
Alltså inte bara i iis-kontrollpanelen utan även på mappen.
BTW: Varför ha strängar på ett id-fält?
Strängar hanteras långsammare i en databas.

weedogtMedlem sedan mars 200427 inlägg
#5

Travoni skrev:

Du måste se till att IUSR har skrivrättigheter på din databasmapp. Alltså inte bara i iis-kontrollpanelen utan även på mappen.

Jag har nu satt bock för alla "allow" ("Full controll") för IUSR på mappen med databasen. Det funkar ändå inte. :(

TW: Varför ha strängar på ett id-fält?
Strängar hanteras långsammare i en databas.

Bra fråga... Jag är nybörjare. Jag ska ändra!

weedogtMedlem sedan mars 200427 inlägg
#6

Nu har jag fått det att funka! Efter att ha letat på andra ASP.NET forum är det uppenbart att detta problem har MÅNGA haft.

Jag gjorde så här:

1. Högerklicka på foldern där databasfilen ligger.
2. Klicka på "Security" fliken (obs att "Use simple file sharing" i explorer/tools/folder options/view inte får vara valt!)
3. Klicka på "Add...".
4. Skriv in "ASPNET" och klicka på OK.
5. Bocka för Allow för den nya raden ("ASP.NET....").
6. Stäng, tuta och kör!

Det verkar också vara så att sitter man och kör på en "ensam" dator (tex hemma) så har man normalt inte problemet. Men om man kör en nätverksansluten (man tillhör en domain) dator (tex på jobbet) så har man det.

TravoniMedlem sedan okt. 20041 556 inlägg
#7

Bra, att du delar med dig av dina framgångar så kan alla ta del av dem. :i

127 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)