Avatar billede thomas_regin Nybegynder
08. april 2002 - 11:18 Der er 14 kommentarer og
1 løsning

Et simpelt login-script, der checker i databasen!?

Okay!.. Jeg indrømmer, at jeg er begynder udi .Net, men det er pinligt for mig, at indrømme, at jeg ikke engang kan finde ud af at lave et simpelt login script. Jeg mangler simpelthen nogle ting fra Classic ASP, hvor man kunne hive felter ud ad DB'en og derefter spørge: If rs.EOF then.. Det er sgu' nemmere at kode et helt nyt styresystem i Assembler end at få et recordset ud fra en SQL server i VB.Net!.. :)

Nuvel. Jeg håber, at der er nogle derude, som kan hjælpe mig!

Mit problem er følgende:

Mine brugere skal kunne skrive Brugernavn og Password i et par felter, som derefter skal valideres gennem SQL-serveren:

SelectStatement = "Select * From USERS WHERE USERNAME = '" & LblUsername.Text & "' AND PASSWORD = '" & LblPassword.Text & "'"

Herefter opstår problemet, fordi jeg mangler en måde at checke om SQL-statementet er End of file..

Er det mig, der tænker i de forkerte baner, eller findes der en nem løsning på dette problem?

På forhånd tak,

Thomas Regin.

Avatar billede nute Nybegynder
08. april 2002 - 11:29 #1
du skal kikke på i SqlCommand klassen, den metoden som heter ExecuteNonQuery. Den returnerer antall rekker i databasen som passer din SQL. Hvis denne er større en 0, så er brukeren registrert...

/nute
Avatar billede nute Nybegynder
08. april 2002 - 11:42 #2
et hurtig eksempel som *ikke* er testet:

<% @ Page language="C#" debug="true" %>
<% @ import namespace="System.Data.SqlClient" %>

<html>
<SCRIPT LANGUAGE="C#" runat="server">

void Page_Load( Object o, EventArgs e ){
    if( Page.IsPostBack ){
        String SQL = "Select * From USERS WHERE USERNAME = '" + username.Text + "' AND PASSWORD = '" + password.Text + "'";
        SqlConnection sqlConn = null; // Din Connection
        SqlCommand sqlComm = new SqlCommand( SQL, sqlConn );
        int sqlResult = sqlComm.ExecuteNonQuery();
        if( sqlResult > 0 ){
            result.Text = "Du er logget inn";
        } else {
            result.Text = "Feil brukernavn eller passord";
        }
    }
}
</SCRIPT>
<body>
<form name="frm" runat="server">
<asp:TextBox ID="username" runat="server" /><br>
<asp:TextBox ID="password" runat="server" /><br>
<asp:Button ID="submitButton" Text="Login" runat="server" /><br>
<asp:Label ID="result" runat="server" /><br>
</form>
</body>
</html>

/nute
Avatar billede thomas_regin Nybegynder
08. april 2002 - 11:43 #3
Hejsa Nute!

Tak for svaret, men hvordan "kigger" jeg i SqlCommand klassen?

Thomas.
Avatar billede nute Nybegynder
08. april 2002 - 11:45 #4
se i dokumentasjonen til .NET. Når du innstallerte frameworket, så håper jeg da du innstallerte den ?! Den liggger høyst sannsynlig under

Start > Programmer > Microsoft .NET framework SDK > Documentation

/nute
Avatar billede thomas_regin Nybegynder
08. april 2002 - 11:57 #5
Tak for svaret!.. Jeg kan ikke helt overskue noget som helst lige nu, men det er sikkert rigtigt! :)

Du har ikke tilfældigvis en VB udgave af dit C# eksempel, vel?..

Thomas.
Avatar billede nute Nybegynder
08. april 2002 - 12:20 #6
nope...jeg skriver i C# :| og jeg har desverre ikke tid til å oversette...
Avatar billede thomas_regin Nybegynder
08. april 2002 - 14:16 #7
Hejsa igen!

Okay!.. Nu er den ved at være der, men ligemeget hvad jeg gør, så returnerer ExecuteNonQuery "-1"! Er der én der har en forklaring på dette?

På forhånd tak!

Thomas Regin.
Avatar billede nute Nybegynder
08. april 2002 - 14:20 #8
fungerer din SQL hvis du fyrer den av direkte i din database ?
Avatar billede thomas_regin Nybegynder
08. april 2002 - 14:24 #9
Ja, det gør den desværre!.. :(

Thomas.
Avatar billede thomas_regin Nybegynder
08. april 2002 - 14:26 #10
Her er min kode:

myConnectString = "UID=sa;PWD=;Data Source=localhost;Initial Catalog=DTMEDIE;"
        Dim myConnection As New SqlConnection(myConnectString)
        Dim myCommand As New SqlCommand( _
                  "SELECT * From USERS WHERE (USERNAME = '" & TxtUsername.Text & "') AND (PASSWORD = '" & TxtPassword.Text & "')",  _
                    myConnection)
        myCommand.Connection.Open()
        SqlResult = myCommand.ExecuteNonQuery()
        myCommand.Connection.Close()
        Response.Write(SqlResult)
        if SqlResult > 0 then
            msg.Text = "<br>Du er logget ind"
            ''session("logged_in") = "yes"
        Else
            msg.Text = "<br>Fejl i brugernavn eller password. Prøv igen"
        End If

Der er ingen fejl, men alligevel returnerer SqlResult -1!
Avatar billede nute Nybegynder
08. april 2002 - 14:31 #11
hmm...spooky...

hva med noe ála (min VB er ikke så god, men jeg håper du forstår hva jeg mener):

Dim reader As SqlDataReader
Dim result As String
myCommand.Connection.Open()
reader = myCommand.ExecuteReader()
if( reader.Read() ) then
  result = "Logget ind"
else
  result = "Ikke logget ind"
end if
myCommand.Connection.Close()
Avatar billede odegaard Nybegynder
08. april 2002 - 14:35 #12
hvad med en count(*) i SQL'en ??? Hvis count=0 er brugeren ikke logget ind.
Så slipper du for en masse bøvl, da du altid får et resultat retur.
Avatar billede thomas_regin Nybegynder
08. april 2002 - 14:43 #13
Nute!.. Det virkede!!!.. Fantastisk!! Du har lige reddet min dag! :-))

Tjaeh.. God idé!.. Det vil jeg muligvis prøve i en anden sammenhæng!

Nute, kan du ikke lige lave et svar, så jeg kan give dig nogle points?

Mange tak for hjælpen,

Thomas Regin.
Avatar billede thomas_regin Nybegynder
08. april 2002 - 14:44 #14
Ooops.. I anden linie, skulle der naturligvis ha' stået:

Odegaard, God idé.. Det vil jeg muligvis prøve i en anden sammenhæng!

Sorry!.. :-)

Thomas.
Avatar billede nute Nybegynder
08. april 2002 - 14:47 #15
fino...

svarer så...:)
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