Login-side! Problem med at få adgang til Access-database
Hej Eksperter!Jeg har lavet en simpel login-side som skal benytte en ACCESS-database. Der er to felter på siden: Brugernavn og Password. Derudover benytter jeg en CustomValidator.
Hvis jeg prøver at køre projektet (som kører lokalt på min WinXP) får jeg efter at trykke "OK" efter de indtastede oplysninger, følgende fejl i browservinduet:
Server Error in '/produktkatalogMedLogin' Application.
--------------------------------------------------------------------------------
The Microsoft Jet database engine cannot open the file 'C:\Documents and Settings\My Documents\Databaseprojekter\login.mdb'. It is already opened exclusively by another user, or you need permission to view its data.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.OleDb.OleDbException: The Microsoft Jet database engine cannot open the file 'C:\Documents and Settings\My Documents\Databaseprojekter\login.mdb'. It is already opened exclusively by another user, or you need permission to view its data.
Source Error:
Line 78: private void CustomValidator1_ServerValidate(object source, System.Web.UI.WebControls.ServerValidateEventArgs args)
Line 79: {
Line 80: oleDbConnection1.Open();
Line 81:
Line 82: oleDbDataAdapter1.SelectCommand.CommandText = "SELECT * FROM LOGIN WHERE LOGIN_BRUGERNAVN = '" + Request.Form[ "TextBox_brugernavn" ].ToString() + "'";
Source File: c:\inetpub\wwwroot\produktkatalogmedlogin\webform1.aspx.cs Line: 80
Stack Trace:
[OleDbException (0x80004005): The Microsoft Jet database engine cannot open the file 'C:\Documents and Settings\nicholas\My Documents\Databaseprojekter\login.mdb'. It is already opened exclusively by another user, or you need permission to view its data.]
System.Data.OleDb.OleDbConnection.ProcessResults(Int32 hr)
System.Data.OleDb.OleDbConnection.InitializeProvider()
System.Data.OleDb.OleDbConnection.Open()
produktkatalogMedLogin.WebForm1.CustomValidator1_ServerValidate(Object source, ServerValidateEventArgs args) in c:\inetpub\wwwroot\produktkatalogmedlogin\webform1.aspx.cs:80
System.Web.UI.WebControls.CustomValidator.OnServerValidate(String value)
System.Web.UI.WebControls.CustomValidator.EvaluateIsValid()
System.Web.UI.WebControls.BaseValidator.Validate()
System.Web.UI.Page.Validate()
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
System.Web.UI.Page.ProcessRequestMain()
-----------------------------------------------
Altså, så vidt jeg kan se...er der tale om et problem med rettigheder eller også er den åben(???) i forvejen!
Er der nogen som har et forslag til hvordan jeg kan løse dette problem?
Her er min codeBehind-fil:
----------------------------------------------------------------
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Web.Security;
namespace produktkatalogMedLogin
{
/// <summary>
/// Summary description for WebForm1.
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox TextBox2;
protected System.Web.UI.WebControls.Label bruger;
protected System.Web.UI.WebControls.Button Button_login;
protected System.Data.OleDb.OleDbConnection oleDbConnection1;
protected System.Data.OleDb.OleDbCommand oleDbSelectCommand1;
protected System.Data.OleDb.OleDbCommand oleDbInsertCommand1;
protected System.Data.OleDb.OleDbCommand oleDbUpdateCommand1;
protected System.Data.OleDb.OleDbCommand oleDbDeleteCommand1;
protected System.Data.OleDb.OleDbDataAdapter oleDbDataAdapter1;
protected System.Web.UI.WebControls.CustomValidator invalidPasswordValidator;
protected System.Web.UI.WebControls.TextBox TextBox_brugernavn;
protected System.Web.UI.WebControls.Label password;
protected System.Data.OleDb.OleDbDataReader dataReader;
private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.oleDbConnection1 = new System.Data.OleDb.OleDbConnection();
this.oleDbSelectCommand1 = new System.Data.OleDb.OleDbCommand();
this.oleDbInsertCommand1 = new System.Data.OleDb.OleDbCommand();
this.oleDbUpdateCommand1 = new System.Data.OleDb.OleDbCommand();
this.oleDbDeleteCommand1 = new System.Data.OleDb.OleDbCommand();
this.oleDbDataAdapter1 = new System.Data.OleDb.OleDbDataAdapter();
//
// oleDbConnection1
//
this.oleDbConnection1.ConnectionString = @"Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Database Password=;Data Source=""C:\Documents and Settings\nicholas\My Documents\Databaseprojekter\login.mdb"";Password=;Jet OLEDB:Engine Type=5;Jet OLEDB:Global Bulk Transactions=1;Provider=""Microsoft.Jet.OLEDB.4.0"";Jet OLEDB:System database=;Jet OLEDB:SFP=False;Extended Properties=;Mode=Share Deny None;Jet OLEDB:New Database Password=;Jet OLEDB:Create System Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;User ID=Admin;Jet OLEDB:Encrypt Database=False";
//
// oleDbDataAdapter1
//
this.oleDbDataAdapter1.DeleteCommand = this.oleDbDeleteCommand1;
this.oleDbDataAdapter1.InsertCommand = this.oleDbInsertCommand1;
this.oleDbDataAdapter1.SelectCommand = this.oleDbSelectCommand1;
this.oleDbDataAdapter1.UpdateCommand = this.oleDbUpdateCommand1;
this.invalidPasswordValidator.ServerValidate += new System.Web.UI.WebControls.ServerValidateEventHandler(this.CustomValidator1_ServerValidate);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void CustomValidator1_ServerValidate(object source, System.Web.UI.WebControls.ServerValidateEventArgs args)
{
oleDbConnection1.Open();
oleDbDataAdapter1.SelectCommand.CommandText = "SELECT * FROM LOGIN WHERE LOGIN_BRUGERNAVN = '" + Request.Form[ "TextBox_brugernavn" ].ToString() + "'";
dataReader = oleDbDataAdapter1.SelectCommand.ExecuteReader();
dataReader.Read();
if(args.Value == dataReader.GetString( 2 ) )
{
FormsAuthentication.SetAuthCookie( Request.Form[ "TextBox_brugernavn" ], false );
Session.Add( "name", Request.Form[ "TextBox_brugernavn" ].ToString() );
Response.Redirect( "Produktliste.aspx" );
}
else
args.IsValid = false;
oleDbConnection1.Close();
}
private void oleDbDataAdapter2_RowUpdated(object sender, System.Data.OleDb.OleDbRowUpdatedEventArgs e)
{
}
}
}
