Gå til innhold

Anbefalte innlegg

Hei jeg har et lite problem, ja vet det er bedre måter å gjøre pass på men det er innlev,

jeg får beskjed om Must declare the scalar variable "@Mail". forsåvidt hvis jeg bytter om på mail og pass så kommer Must declare the scalar variable "@Password".

 

noen som vet hvor feilen ligger fikk ikke så mye ut av google

 

 

               protected void Button1_Click(object sender, EventArgs e)
       {
          string user = TextBox1.Text;
          string pass = TextBox2.Text;


           SqlConnection con = new SqlConnection(
           WebConfigurationManager.ConnectionStrings["ConnectionString1"].ConnectionString);
           SqlCommand cmd = new SqlCommand("SELECT ID FROM Medlemmer WHERE Mail = @Mail AND Passord = @Passord ", con);

           con.Open();
           SqlDataReader les = cmd.ExecuteReader();

           if (les.Read())
           {
               user = les["@Mail"].ToString();
               pass = les["@Passord"].ToString();
           }
           try 
           {
               Button1.Text = "Godkjent Passord";
           }
           finally
           {
               con.Close();
           } 
       }

 

takker på forhand

Endret av angeland89
Lenke til kommentar
Videoannonse
Annonse

Hvor deklarerer du @Mail og @Password variablene?

 

Ser ikke at du deklarerer dem noen plasser i koden din? :)

 

F.eks.

 

SqlCommand cmd = new SqlCommand
       ("SELECT ID FROM Medlemmer WHERE Mail = @Mail AND Passord = @Passord ", con);

// Deklarere parametere
cmd.Parameters.AddWithValue("Mail", user);
cmd.Parameters.AddWithValue("Password", pass);
// -------------------

con.Open();
SqlDataReader les = cmd.ExecuteReader();

Endret av Cemi
Lenke til kommentar

Ja, men den vet jo ikke hva den skal hente dersom du ikke sier hva mail og password skal være. Du må deklarere en verdi til dem, som gjør at den vet hvilke verdier den skal søke etter :)

 

Og i ditt tilfelle, såvidt jeg kan forstå, så er det å sette dem til verdiene

string user = TextBox1.Text;

string pass = TextBox2.Text;

 

Dersom du bruker @variabel i din ASP.NET eller C# kode så må du deklarere verdien den skal ha.

Endret av Cemi
Lenke til kommentar

ja vil sette verdiene til

string user = TextBox1.Text;

string pass = TextBox2.Text;

 

og finne ID når user og pass matcher.

 

           cmd.Parameters.AddWithValue("@Mail", user);
           cmd.Parameters.AddWithValue("@Password", pass);

 

la til det du skrev med og uten @ gjorde ingen forskjell

Lenke til kommentar

            cmd.Parameters.AddWithValue("@Mail", TextBox1.Text);
           cmd.Parameters.AddWithValue("@Password", TextBox2.Text);

 

Er det du prøver å lage en Login? Eller prøver du å selecte ID'en?

 

if (les.Read())
           {
               user = les["@Mail"].ToString();
               pass = les["@Passord"].ToString();
           }
           try 
           {
               Button1.Text = "Godkjent Passord";
           }
           finally
           {
               con.Close();
           } 

 

Jeg skjønner ikke helt poenget med koden din.

Dersom Les.Read()

user = les["@Mail"].ToString()

 

Vil sette user til det samme som user allerede er?

 

Deretter prøve å sette Button1.Text til godkjent passord?

Lenke til kommentar

gikk tilbake til tidligere versjon

der feilen begynte,

kanskje litt lettere å se feilen da

 

       protected void Button1_Click(object sender, EventArgs e)
       {
           SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionStrings["ConnectionString1"].ConnectionString);
           SqlCommand cmd = new SqlCommand("Select count(*) from Medlemmer WHERE Mail = @Mail AND Passord = @Passord ", con);
           cmd.Parameters.AddWithValue("@Mail", TextBox1.Text);
           cmd.Parameters.AddWithValue("@Password", TextBox2.Text);

           object count = 0;

           try
           {
               con.Open();
               count = cmd.ExecuteScalar();

           }
           finally
           {
               con.Close();

           }

           int login = Convert.ToInt32(count);

           if (login == 1)
           {
               FormsAuthentication.RedirectFromLoginPage(TextBox1.Text, false);

           }
           else if (login == 0)
           {
               Feil.Text = "Ikke riktigt brukernavn eller login";
           }
           else
           {
               Feil.Text = "Det skjedde en eller annen merkelig feil";
           }

       }

Lenke til kommentar
  • 5 uker senere...

try uten catch er vel fyfy?

 

Litt sånn "on error resume next" fra gamle vb6-dagene :)

 

-C-

 

En try uten catch vil kaste Exception som om det ikke var i en try-catch blokk så hvis feilen håndteres andre steder i koden kan det være greit. Som i dette tilfellet kan det være greit å sørge for at db-connection lukkes uansett og så kan Exceptions f.eks håndteres i Global.asax.

Lenke til kommentar
  • 1 år senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...