22. april 2004 - 00:23Der er
14 kommentarer og 1 løsning
Asp.net og access database, connection ikke muligt at vise data
Jeg er novice i asp.net og Visualstudio.net 2003 Academic. Jeg skal via en webform vise data fra en accessdatabase: og har følgende kode i min webform1.aspx.vb, som visualstudio jo selv laver bortset fra koden som jeg selv har sat ind ved >> >>Imports System.Data.OleDb Public Class WebForm1 Inherits System.Web.UI.Page #Region " Web Form Designer Generated Code " 'This call is required by the Web Form Designer. <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Me.OleDbConnection1 = New System.Data.OleDb.OleDbConnection Me.OleDbCommand1 = New System.Data.OleDb.OleDbCommand ' 'OleDbConnection1 ' Me.OleDbConnection1.ConnectionString = "Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database L" & _ "ocking Mode=1;Data Source=""C:\Inetpub\wwwroot\opgaver\opg3\Adressekartotek.mdb"";" & _ "Mode=Share Deny None;Jet OLEDB:Engine Type=5;Provider=""Microsoft.Jet.OLEDB.4.0"";" & _ "Jet OLEDB:System database=;Jet OLEDB:SFP=False;persist security info=False;Exten" & _ "ded Properties=;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:Encrypt" & _ " Database=False;Jet OLEDB:Create System Database=False;Jet OLEDB:Don't Copy Loca" & _ "le on Compact=False;User ID=Admin;Jet OLEDB:Global Bulk Transactions=1" ' 'OleDbCommand1 ' Me.OleDbCommand1.CommandText = "SELECT Person.Fornavn, Person.Efternavn, Person.Adresse, Person.Postnr, Postnr.By" & _ "navn, Person.Telefon FROM (Person INNER JOIN Postnr ON Person.Postnr = Postnr.Po" & _ "stnr)" Me.OleDbCommand1.Connection = Me.OleDbConnection1
End Sub Protected WithEvents OleDbConnection1 As System.Data.OleDb.OleDbConnection Protected WithEvents OleDbCommand1 As System.Data.OleDb.OleDbCommand Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid
'NOTE: The following placeholder declaration is required by the Web Form Designer. 'Do not delete or move it. Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init 'CODEGEN: This method call is required by the Web Form Designer 'Do not modify it using the code editor. InitializeComponent() End Sub #End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Put user code to initialize the page here >> OleDbConnection1.Open() >> DataGrid1.DataSource = OleDbCommand1.ExecuteReader >> DataGrid1.DataBind() End Sub Private Sub OleDbConnection1_InfoMessage(ByVal sender As System.Object, ByVal e As System.Data.OleDb.OleDbInfoMessageEventArgs) End Sub Private Sub DataGrid1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataGrid1.SelectedIndexChanged End Sub End Class ---- Får fejlen: Microsoft JetDatabasemotoren kan ikke åbne filen: C:\Inetpub\wwwroot\opgaver\opg3\Adressekartotek.mdb Den er allerede åbnet med en udelt adgang af en anden bruger, eller du skal have tilladelse til at vise dataene. ----- Så vidt jeg kan se på min IIS så er der adgang til at læse data i mappen. Samtidig er der en rød markering udfor: OleDbConnection1.Open()
Hvad kan jeg gøre... Har prøvet at installere min IIS igen.
Et TOTALT skud i tågen: Er din Access base åben samtidigt med at du prøver at læse i den fra dit website? Det driller lidt en gang i mellem, jeg kan desværre ikke huske hvornår det sker, men nogen gange er løsningen blot at lukke Access, og din fejl lyder lidt bekendt.
jakobg > Nej, Access er ikke åben samtidig. Jeg har compilet koden, og køre debug fra Visualstudio, ingen fejl i koden. Men jeg kan ikke se indholdet, kun fejl teksten ;-(
jakobg > connect har jeg jo sat op i visualstudio, og database forbindelsen virker her når man tester direkte i VS. 1. Din connectstring hvor skal den indsætte? Burde det ikke være løst via VS? 2. Jeg forstår ikke lige det du skriver med ASPNET kontoen? Hvis det er noget med Read/Write access på IIS, så mener jeg at der sagt ok til begge dele.
Find Access basen via din Stifinder, og check permissions på den: Din computer har en særlig konto, ASPNET, som blev oprettet da du installerede .NET Frameworket, og som bliver anvendt til at eksekvere koden. Denne konto skal have skrive-rettigheder til databasen!
Men at dømme ud fra din fejlmeddelse, så er det ikke dét der er galt: Er du HELT 100 på, at Access basen ikke er åben, evt. i VS.NET?
jakobg > 1. ASPNET kontoen (checker jeg i aften, er ikke nærheden af min maskine) 2. Jeg har lagt mærke til at når jeg køre debug/skal vise løsningen via VS, så bliver der lavet en ldb version af Access. Men det skal der jo gøres når der læses/skrives?
Jeg bruger stort set aldrig VS.NET til at sætte connectionstrings og den slags op, så jeg skyder lidt i mørke nu. Men har VS.NET ikke lavet et Connection objekt, som du kan se allernederst på siden? Højreklik, og vælg Properties: Se "Connection". Hvad står der dér?
Hvis der står dette: "Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database Locking Mode=1;Data Source=""C:\Inetpub\wwwroot\opgaver\opg3\Adressekartotek.mdb"";Mode=Share Deny None;Jet OLEDB:Engine Type=5;Provider=""Microsoft.Jet.OLEDB.4.0"";Jet OLEDB:System database=;Jet OLEDB:SFP=False;persist security info=False;Extended Properties=;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Create System Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;User ID=Admin;Jet OLEDB:Global Bulk Transactions=1"
Kan du evt. prøve at erstatte det med følgende: "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=""C:\Inetpub\wwwroot\opgaver\opg3\Adressekartotek.mdb"";"
jakobg> Jo, der er en connection objekt. Så vidt jeg kan se er det dette som står i koden øverst i mit spørgsmål. Så dit forslag er at slette hele den linie som er i webform1.aspx.vb (min codebehind side) Vil det hjælpe dig hvis jeg sendte dig løsningen i zip.format?
jakobg > Det virker ikke der kommer blot en anden fejlmedd. Troede at med VS var det hele lettere? Der findes tonsvis at tutorials, men jeg ka' ikke få vist mine data.
jakobg> Jeg har leget lidt med alm. asp før og der skulle man jo kode det meste fra bunden. Jeg købte VS for let at kunne komme til at bruge .net og andre smarte ting uden at kode. Jeg har iøvrigt fundet løsningen: http://www.webwizguide.info/asp/faq/server_permissions.asp Jeg skulle tilføje rettigheder på en ASP.NET machineaccount = den konto som din maskine bruger til at afvikle .net filer. Hvem f* kunne vide dette ;-( Da du har hjulpet mig en del med hurtige svar får du point hvis du lige kan give mig nogle gode links til VS. OK?
Hehe, jeg HAR da allerede foreslået at kigge på rettighederne til ASPNET-kontoen (3. kommentar i tråden:). Så var det altså ikke helt ved siden af trods alt.
jakobg> Jeg anede faktisk ikke at der var en særlig asp.net machine account. Og at det var XP-proff. der spillede ind her. I den gode gamle PWS i Win98 var det relativt let at få adgang til mappe og dermed skrive og læse ret til databaser. Men jeg er da blevet en del kloger i dag ;-) Tak for hjælpen.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.