Avatar billede krestionsen Nybegynder
25. februar 2004 - 10:57 Der er 6 kommentarer og
1 løsning

Oprette og teste på en bruger med access

Jeg er igang med, at lave noget login, hvor brugeren skriver sit brugernavn og password, hvorefter det bliver testet om det er rigtigt i databasen. Hvis brugeren ikke har et brugernavn og et password skal vedkommende kunne oprette sig i databasen. Problemet er, at jeg ikke kan få noget af det til at virke, og jeg har søgt det meste af nettet igennem, men har ikke rigtigt fundet noget. Jeg har vedlagt min aspx fil og min class fil.

Dette er min .aspx fil, som kører metoderne fra min class fil:

<%@ Page Language="C#" Inherits="Facade" Src="DBFacade.cs" %>
<script runat="server">

    void LoginBtn_Click(Object sender, EventArgs e)
    {
        string brugernavn;
        string password;
       
        Facade fc = new Facade();
   
        if (Page.IsValid)
        {
            if ((TextBox1.Text == "brugernavn") && (TextBox3.Text == "password"))
            {
              fc.testbruger(brugernavn, password);
            }
            else
            {
                Msg.Text = "Forkert brugernavn eller password";
            }
        } 
   
    }
   
    void OpretBtn_Click(Object sender, EventArgs e)
    {
        if(Page.IsValid)
        {
            if ((TextBox2.Text == "brugernavn") && (TextBox4.Text == "password"))
            {
                fc.tilfoejBruger(brugernavn, password);
            }
            else
            {
                Msg.Text = "Invalid Credentials: Please try again";
            }
        }
   
    }

</script>
<html>
<head>
</head>
<body>
    <form runat="server">
        <p align="center">
        </p>
        <p align="center">
        </p>
        <p align="center">
        </p>
        <p align="center">
        </p>
        <p align="center">
        </p>
        <p align="center">
        </p>
        <p align="center">
        </p>
        <p align="center">
        </p>
        <p align="center">
        </p>
        <p align="center">
        </p>
        <p align="center">
        </p>
        <p align="center">
            Login
        </p>
        <p align="center">
            <asp:Label id="Label1" runat="server">Brugernavn:</asp:Label>
            <asp:TextBox id="TextBox1" runat="server"></asp:TextBox>
        </p>
        <p align="center">
            &nbsp;&nbsp; <asp:Label id="Label2" runat="server">Password:</asp:Label>
            <asp:TextBox id="TextBox3" runat="server"></asp:TextBox>
        </p>
        <p align="center">
            <asp:button id="LoginBtn" onclick="LoginBtn_Click" runat="server" text="Login"></asp:button>
        </p>
        <p align="center">
        </p>
        <p align="center">
            Hvis du ikke er oprettet som bruger, så skriv et brugernavn og password og tryk på
            opret.
        </p>
        <p align="center">
            <asp:Label id="Label3" runat="server">Brugernavn:</asp:Label>
            <asp:TextBox id="TextBox2" runat="server"></asp:TextBox>
        </p>
        <p align="center">
            <asp:Label id="Label4" runat="server">Password:</asp:Label>
            <asp:TextBox id="TextBox4" runat="server"></asp:TextBox>
        </p>
        <p align="center">
            <asp:button id="OpretBtn" onclick="OpretBtn_Click" runat="server" text="Opret"></asp:button>
        </p>
        <!-- Insert content here -->
    </form>
</body>
</html>


Dette er min class fil, som har forbindelse til databasen og hvor alle metode kaldene til databasen er.

using System;
using System.Text;
using System.Collections;
using System.Data;
using System.Data.OleDb;
using System.Web.UI;


    public class Facade : Page
    {
        private System.Data.OleDb.OleDbDataReader myReader;
        private System.Data.OleDb.OleDbCommand myCommand;
        private System.Data.OleDb.OleDbConnection con;
        //private System.Data.OleDb.OleDbDataAdapter oleDbDataAdapter1;
        private string forbindelse;
        private string sql;

        public Facade()
        {
            forbindelse = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\db1.mdb";

            con = new OleDbConnection(forbindelse);


        }

        public void aabnSession()
        {
            try
            {
                con.Open();

            }
            catch (Exception ex)
            {
                Console.WriteLine("Connection mislykkedes" + ex.StackTrace + ex.ToString());
            }
        }

        public void lukSession()
        {
            try
            {
                con.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Fejl i lukSession" + ex.StackTrace + ex.ToString());
            }
        }

        public void testBruger(string brugernavn, string password)
        {
          try
          {
              aabnSession();
              sql = "SELECT * From Brugere WHERE brugernavn = bruger and password = password";
              myCommand = new OleDbCommand(sql,con);

          }
          catch(System.Data.OleDb.OleDbException ex)
          {
              Console.WriteLine("testBruger mislykkedes");
              Console.WriteLine("Fejl befinder sig : " + ex.StackTrace + ex.ToString());
          }
          finally
          {
              lukSession();
          }
        }

        public void tilfoejBruger(string brugernavn, string password)
        {
          try
          {
              aabnSession();
              sql = "INSERT INTO Brugere (brugernavn, password) VALUES ('"+brugernavn+"', '"+password+"')";
              myCommand = new OleDbCommand(sql,con);
          }
          catch(System.Data.OleDb.OleDbException ex)
          {
              Console.WriteLine("tilfoejBruger mislykkedes");
              Console.WriteLine("Fejl befinder sig : " + ex.StackTrace + ex.ToString());
          }
          finally
          {
              lukSession();
          }
      }
}
Avatar billede krestionsen Nybegynder
25. februar 2004 - 11:33 #1
Flere point kan gives:)
Avatar billede thor.ostergaard Nybegynder
25. februar 2004 - 20:02 #2
Hvor og hvordan fejler din kode?
Avatar billede krestionsen Nybegynder
25. februar 2004 - 21:04 #3
Jeg har lavet en metode med web matrix, som ligger i min class fil der tager alle de brugere fra min database samt deres password, men hvordan tester jeg dette dataset med det brugernavn og password brugeren skriver ind på min login side, for at se om det er det rigtige brugernavn og password, som de har skrevet?
Jeg har vedlagt metoden.

System.Data.Dataset testBruger(string brugernavn, string password)
      {
        string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=D:\\db1.mdb";
        System.Data.IDbConnection dbConnection = new System.Data.OleDb.OleDbConnection(connectionString);

        string queryString = "SELECT [Brugere].* FROM [Brugere] WHERE (([Brugere].[brugernavn] = @brugernavn) A" +
        "ND ([Brugere].[password] = @password))";
        System.Data.IDbCommand dbCommand = new System.Data.OleDb.OleDbCommand();
        dbCommand.CommandText = queryString;
        dbCommand.Connection = dbConnection;

        System.Data.IDataParameter dbParam_brugernavn = new System.Data.OleDb.OleDbParameter();
        dbParam_brugernavn.ParameterName = "@brugernavn";
        dbParam_brugernavn.Value = brugernavn;
        dbParam_brugernavn.DbType = System.Data.DbType.String;
        dbCommand.Parameters.Add(dbParam_brugernavn);
        System.Data.IDataParameter dbParam_password = new System.Data.OleDb.OleDbParameter();
        dbParam_password.ParameterName = "@password";
        dbParam_password.Value = password;
        dbParam_password.DbType = System.Data.DbType.String;
        dbCommand.Parameters.Add(dbParam_password);

        System.Data.IDbDataAdapter dataAdapter = new System.Data.OleDb.OleDbDataAdapter();
        dataAdapter.SelectCommand = dbCommand;
        System.Data.DataSet dataSet = new System.Data.DataSet();
        dataAdapter.Fill(dataSet);

        return dataSet;
      }
Avatar billede krestionsen Nybegynder
25. februar 2004 - 21:13 #4
Jeg har testet den i min .aspx fil, hvor test og test er et rigtigt brugernavn og password fra databasen, som skulle returnere true, men den kommer med følgende fejl meddelelse:

CS0234: The type or namespace name 'Dataset' does not exist in the class or namespace 'System.Data' (are you missing an assembly reference?)

void LoginBtn_Click(Object sender, EventArgs e)
    {
            string brugernavn = "test";
            string password = "test";

            Facade fc = new Facade();
            fc.testbruger(brugernavn, password);
    }
Avatar billede thor.ostergaard Nybegynder
25. februar 2004 - 21:38 #5
Det hedder DataSet og ikke Dataset - jeg ved ikke om det er fejlen, men det er én fejl.

Du skulle overveje at spare sammen til VS.NET - den hjælper til undgå mange af den slags fejl.
Avatar billede krestionsen Nybegynder
25. februar 2004 - 23:37 #6
Det hjalp, nu kan jeg kompilere det, men hvordan tester jeg datasettet med det brugernavn og password, som brugeren har skrevet om det er rigtigt?
Avatar billede krestionsen Nybegynder
17. juni 2004 - 10:51 #7
nope
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester