Android Question how to connect registration page to mssql?

SCIS

Active Member
Licensed User
Longtime User
Dear,

I'm don't find a way that make my program works.

The problem: I don't know how to insert data from a registration page into a mssql database

This is the code i already have but when i start the apllication it doesn't work, it stops working when jobdone starts.

Can someone pleas look at my code and give me tips how i need to fi this exactely.

thanks
9939dd08fbfc3298ac508ea80d89ed85.png
c69503f351db360232847377e8f7d751.png
7fc0bf0e32c829a64b634da1e0c4807d.png
 

SCIS

Active Member
Licensed User
Longtime User
We need to work this way from school, but school can't help us to solve my problem.

It think i'm doing something wrong in my code because when i start the application i can't go further that jobdone. jobdone start and says it's false but it needs to be true.
I don't know how to let this code work.

It need to put data from the registration page into a mssql databse.

thanks for you help, here is my code

B4X:
'Attributen
#Region  Activity Attributes
    #FullScreen: False
    #IncludeTitle: True
#End Region
'Server aanspreken
Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.
   
    'Variabele aanmaken om de server te kunnen aanspreken.
    Dim ServerUrl As String
   
    'Variabele waarde toekennen om verbinding te kunnen maken met de juiste poort en database van de MSSQL.
    ServerUrl = "http://81.82.217.67:10001/ticketcenter.aspx"
   
    '...
    Dim job1, job2 As HttpJob
   
End Sub

Sub Globals
    'These global variables will be redeclared each time the activity is created.
    'These variables can only be accessed from this module.

    Dim strGebruikersnaam, strWachtwoord, strEmailAdres As String
   
    Private btnRegistreren As Button
    Private btnAlgemeneVoorwaarden As Button
   
    Private cboxAlgemeneVoorwaarden As CheckBox
   
    Private edtEmailAdres As EditText
    Private edtWachtwoord As EditText
    Private edtGebruikersnaam As EditText
   
    Dim intValidateResponse As Int
   
    Dim UserNameChecker As String
   
    Dim Phone1 As Phone
   
   
End Sub

Sub Delay(nmillisecond As Long)

    Dim nBeginTime As Long
    Dim nEndTime As Long
    nEndTime = DateTime.Now + nmillisecond
    nBeginTime = DateTime.Now
    Do While nBeginTime < nEndTime
    nBeginTime = DateTime.Now
    If nEndTime < nBeginTime Then
    Return
    End If
    DoEvents
    Loop

End Sub
'Registratiescherm
Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    'Activity.LoadLayout("Layout1")
   
    'Laad de layout registreren om de gebruiker zich te laten registreren.
    Activity.LoadLayout("registreren")
   
    'Tekstboxen van een inputtype voorzien.
    edtGebruikersnaam.InputType = Bit.OR(edtGebruikersnaam.InputType, 0x00000080)
    edtGebruikersnaam.PasswordMode = False
    edtWachtwoord.InputType = Bit.OR(edtWachtwoord.InputType, 0x00000080)
    edtEmailAdres.InputType = Bit.OR(edtEmailAdres.InputType, 0x00000080)
    edtEmailAdres.PasswordMode = False
   
End Sub
'Verdergaan (niet gebruikt)
Sub Activity_Resume

End Sub
'Pauze (niet gebruikt)
Sub Activity_Pause (UserClosed As Boolean)

End Sub
'Registreren van een gebruiker
Sub btnRegistreren_click ()
   
    'Valideert de ingegeven velden van de registratie.
    validateFields
   
    'Verberegt het toetsenbord
    Phone1.HideKeyboard(Activity)
   
    'Geeft een progressschermpje weer met even geduld a.u.b. weer.
    ProgressDialogShow("Even geduld a.u.b.")
   
    'Valideert of de gebruikersnaam die ingevoerd is bestaat.
    CheckIfUsersExists
   
       
End Sub
'Terugkeren
Sub btnGoBack1_click
   
    'Laat de gebruiker terugkeren naar het main scherm.
    StartActivity(Main)
   
End Sub
'Algemene voorwaarden
Sub btnAlgemeneVoorwaarden_click
   
    'laat de gebruiker naar de gebruikersvoorwaarden gaan om deze te lezen.
    StartActivity(Gebruikersvoorwaarden)
   
End Sub
'Valideren velden
Sub validateFields ()
   
    'String koppelen aan edit tekstboxen
   
    strGebruikersnaam = edtGebruikersnaam.Text
    strWachtwoord = edtWachtwoord.Text
    strEmailAdres = edtEmailAdres.Text
   
    'Gebruikersnaam fout meldingen
   
    Dim temppndstring As String
    temppndstring = edtGebruikersnaam.Text

    If temppndstring = "" Then
        Msgbox("Voer een gebruikersnaam in","Waarschuwing")
    Return
    End If
   
    If strGebruikersnaam.Length < 6 Then
        Msgbox("De gebruikersnaam is niet lang genoeg, voer minstens 6 karakters in.","Waarschuwing")
        edtGebruikersnaam.text = ""
        Return
    End If
   
    'Wachtwoord fout meldingen
   
    Dim temppwdstring As String
    temppwdstring = edtWachtwoord.Text

    If temppwdstring = "" Then
        Msgbox("Voer een wachtwoord in","Waarschuwing")
    Return
    End If
   
    If strWachtwoord.Length < 5 Then
        Msgbox("Het opgegeven wachtwoord is niet lang genoeg, voer minstens 5 karakters in","Waarschuwing")
        edtWachtwoord.text = ""
        Return
    End If
   
    'Email Adres fout meldingen
   
    If edtEmailAdres.Text = "" Then
        Msgbox("Voer een email adres in","Waarschuwing")
        Return
    End If

    If edtEmailAdres.Text <> "" Then
        Dim matcher1 As Matcher
        matcher1 = Regex.Matcher("\w+@\w+\.\w+", edtEmailAdres.Text)
        If matcher1.Find = False Then
        Msgbox("Voer een geldig email adres in","Waarschuwing")
        Return
        End If
    End If
   
    'tikbox waarschuwing
   
    If cboxAlgemeneVoorwaarden.Checked = False Then
        Msgbox("Lees en accepteer de algemene voorwaarden","Waarschuwing")
        Return
    End If
   
End Sub

Sub CheckIfUsersExists
   
    job1.Initialize("Job1", Me)
    job1.PostString(ServerUrl,"SELECT Gebruikersnaam FROM Gebruiker WHERE Gebruikersnaam ='"&edtGebruikersnaam.Text&"'")
    Log("HttpUtils.PostString(SELECT Gebruikersnaam FROM Gebruiker) --> CheckIfUserExists")
    Log("Gebruikersnaam ="& edtGebruikersnaam.Text)

End Sub

Sub RegistratieSucces
       
        ToastMessageShow("U registratie is geslaagd, u kunt nu aanmelden.",True)
        job2.Initialize("Job2", Me)
        job2.PostString(ServerUrl,"INSERT INTO Gebruiker (gebruikersnaam,wachtwoord,e-mailadres) VALUES ("&edtGebruikersnaam.Text&"','"&edtWachtwoord.Text&"','"&edtEmailAdres&"')")
   
End Sub

Sub JobDone (job As HttpJob)

Log("JobDone Sub gestart")

    If job.Success = True Then
   
        Log("HttpUtils.IsSucces = true")
        Select job.JobName
       
        Case "Job2"
       
        Dim parser As JSONParser
        Dim response As String
        response = job2.GetString
        parser.Initialize(response)
        Dim rows As List
        rows = parser.NextArray
        Log("Rows=" & rows)
        'werken met resultaat
        'rows is een lijst (zie hierboven)
        'Elk item is een Map met de kolomnamen als keys en de db-waarden als waarden.
        For i = 0 To rows.Size - 1
            Log("Rows #" & i)
            Dim m As Map
            m = rows.Get(i)
            'values van kolom 1, 2 en 3 loggen
            Log("Gebruikersnaam=" & m.Get("Gebruikersnaam"))
            Log("i=" & i)
            Log("m="& m)
           
        Next

        If i = 1 Then
           
            'Als i in dit geval 1 is, wilt dit zeggen dat we een resultaat krijgen, en slagen we dit op in een variable om later nogmaals te controleren
       
            UserNameChecker = m.Get("Gebruikersnaam")
            Log("Usernamecheck"&UserNameChecker)
           
                If  btnRegistreren.Text = UserNameChecker Then
           
                ProgressDialogHide
                Msgbox("Deze gebruikersnaam is al in gebruik.","Waarschuwing")
                btnRegistreren.Text=""
               
                Else
               
                RegistratieSucces
                Log("FIRST REGISTRATIONSUCCESS")
                End If
               
        Else If i <> 1 Then
       
            'In het andere geval zijn er dus geen overeenkomsten en voeren we de functie uit die zorgt dat de account wordt aangemaakt
           
            ProgressDialogHide
            RegistratieSucces
            Log("SECOND REGISTRATIONSUCCESS")
           
        End If
       
        'Als de ontvangen gegevens van de DB overeenkomen met de ingegeven tekst, geven we een melding weer.
        Case "Job1"
       
        Log("POSTED DATASTRING")
       
        'Na dat de account gemaakt is, wachten we 0,7 seconden voor we automatisch teruggaan naar het Loginscherm
        'ProgressDialogHide
        Delay(700)
        Activity.Finish
       
    End Select
   
    'Als JobDone iet doet geven we een foutmelding weer die laat blijken dat men een verbindingprobleem heeft.
    Else If job.Success = False Then
   
    Msgbox("Controleer of u verbonden bent met het netwerk.", "Verbindingsproblemen")
    ProgressDialogHide
   
    End If
   
    job1.Release
   
End Sub
 
Upvote 0

SCIS

Active Member
Licensed User
Longtime User
I know but i don't what is wrong, this is the log when i run the program and click on the button registrate.

8ea7ea6a3112b038017361f28c3ef10c.png
 
Upvote 0

KMatle

Expert
Licensed User
Longtime User
"... target server failed to respond..." Check what the server logs say...

Maybe you must set a header...

B4X:
Dim j As HttpJob
j.Initialize("job name", Me)
j.Download(<link>) 'it can also be PostString or any of the other methods
j.GetRequest.SetHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0")


By the way:

Typing "http://81.82.217.67:10001/ticketcenter.aspx" in my browser gives a "ERR_EMPTY_RESPONSE" error.
 
Upvote 0

aldifong

Member
Licensed User
Longtime User
Hi,

Take a look at this poststring, it should raises a syntax error on mssql since it misses the ' on the 1st field:

job2.PostString(ServerUrl,"INSERT INTO Gebruiker (gebruikersnaam,wachtwoord,e-mailadres) VALUES ("&edtGebruikersnaam.Text&"','"&edtWachtwoord.Text&"','"&edtEmailAdres&"')")
 
Upvote 0
Top