Avatar billede azcii Nybegynder
17. september 2007 - 10:19 Der er 7 kommentarer og
1 løsning

Validering før indsættelse i Database

Jeg har et stykke kode som ser sådan her ud:

<form id="form1" runat="server">
    <asp:ValidationSummary id="validationSummary" ShowMessageBox="true" ShowSummary="false" HeaderText="Du mangler at udfylde:" EnableClientScript="true" runat="server"/>
       
    <asp:SqlDataSource id="CreatUser" runat="server"
    ConnectionString="<%$ ConnectionStrings:MyConnection %>"
    InsertCommand="INSERT INTO users (username, password, email) VALUES (@username,@password,@email)">
      <InsertParameters>
            <asp:ControlParameter ControlID="reg_name" Name="username" PropertyName="Text" />
            <asp:ControlParameter ControlID="reg_pass" Name="password" PropertyName="Text" />
            <asp:ControlParameter ControlID="reg_mail" Name="email" PropertyName="Text" />
        </InsertParameters>
    </asp:SqlDataSource>
     
    <asp:RequiredFieldValidator id="validator_name" runat="server" ControlToValidate="reg_name" Display="Static" ErrorMessage="Brugernavn" text="*" />
    Navn: <asp:TextBox id="reg_name" runat="server"></asp:TextBox>

    <asp:RequiredFieldValidator id="validator_mail" runat="server" ControlToValidate="reg_mail" Display="Static" ErrorMessage="E-mail" Text="*" />
    E-mail: <asp:TextBox id="reg_mail" runat="server"></asp:TextBox>

    <asp:RequiredFieldValidator id="validator_pass" runat="server" ControlToValidate="reg_pass" Display="Static" ErrorMessage="Kodeord" text="*" />
    Kodeord: <asp:TextBox id="reg_pass" TextMode="password" runat="server"></asp:TextBox>
   
    <asp:Button id="reg_submit" runat="server" Text="Tilmeld" OnClick="sendReg" />
</form>

Er der en smart måde at tjekker om brugernavn/email findes i databasen når man trykker på knappen før den sætter ind.
Avatar billede dr_chaos Nybegynder
17. september 2007 - 10:24 #1
Du kan lave en customvalidator som har en serverside metode i din codebehind fil.
I den kan du tjekke om brugernavn og password eksisterer.
Avatar billede neoman Novice
17. september 2007 - 10:28 #2
1. Du kan bruge sqldatasource.inserting eventet og i handleren udføre et check
http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.sqldatasource.inserting(vs.80).aspx
og så kan du derinde Cancel inserten, hvis du ikke ønsker at den skal gå igennem

2. I handleren for den knap som submitter din form kunne du ligeledes udføre checket og undlade at kalde .Insert hvis data allerede er i db'en

3. Du kunne specificere i db'en at felterne skal være UNIQUE og så catche den exception der eventuelt måtte fremkomme. Så kan du have en CustomValidator, som kunne vise den passende besked
Avatar billede neoman Novice
17. september 2007 - 10:31 #3
jeg synes faktisk dr_chaos's forslag er det bedste
Avatar billede azcii Nybegynder
17. september 2007 - 10:36 #4
Okay så vil jeg kaste mig ud i dr_chaos's foreslag
Avatar billede neoman Novice
17. september 2007 - 10:53 #5
Jeg har en funktion som du kunne ændre lidt i :
    Protected Function CheckUser(ByVal UserEmail As String, ByVal UserPassword As String) As Integer
        Dim connStr As String = ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString
        Dim myDBconnection As New SqlConnection()
        myDBconnection.ConnectionString = connStr
        Dim myCommand As SqlCommand

        myDBconnection.Open()
        ' Create the SelectCommand.
        Dim mySQLstring As String = "SELECT UserID FROM trsUsers WHERE UserEmail=@Email AND UserPassword=@UserPassword"
        myCommand = New SqlCommand(mySQLstring, myDBconnection)
        myCommand.Parameters.Add(New SqlParameter("@Email", UserEmail))
        myCommand.Parameters.Add(New SqlParameter("@UserPassword", UserPassword))

        Dim myUserID As Integer

        myUserID = myCommand.ExecuteScalar
        myDBconnection.Close()
        Return myUserID
    End Function
Avatar billede azcii Nybegynder
17. september 2007 - 11:06 #6
Men hvordan kalder jeg så den funktion fra en CustomValidator når jeg skal ha username og email med
Avatar billede neoman Novice
17. september 2007 - 11:09 #7
http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.customvalidator.servervalidate(vs.80).aspx

metoden at finde info er at google på "navnet_på_controllen members"  så havner du på den msdn side som forklarer det hele for asp.net 3. så skift lige til .net 2 i menuen og så er der forklaring og som regel også eksempler
Avatar billede azcii Nybegynder
30. marts 2009 - 12:31 #8
dr_chaos, jeg ahvde glemt alt om dette spørgsmål, jeg fik selv kodet mig ud af det, men hvis du lige skriver et svar så for du point.
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