login  Naam:   Wachtwoord: 
Registreer je!
 Forum

DB vragen

Offline finduilas - 07/05/2008 17:22 (laatste wijziging 07/05/2008 21:52)
Avatar van finduilasPHP gevorderde Hallo,

Ik heb volgende code:
  1. 'databank connectie
  2. Dim cnnLogin As New Data.SqlClient.SqlConnection
  3. 'zeggen met welke connectionstring hij moet verbinden
  4. cnnLogin.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings("conGIP").ToString
  5. 'commando object
  6. Dim strSql As String
  7. strSql = "SELECT login_id FROM tblLogin WHERE username='" & txtGebruikersnaam.Text & "' AND password='" & txtWachtwoord.Text & "'"
  8. Dim cmdId As New Data.SqlClient.SqlCommand(strSql, cnnLogin)
  9. 'open de verbinding
  10. cnnLogin.Open()
  11. 'voer commando uit
  12. Dim strID As String
  13. strID = cmdId.ExecuteScalar
  14. 'sluit de verbinding
  15. cnnLogin.Close()
  16. 'ID in session steken
  17. Session("login") = strID
  18. 'als er geen ID in de session zit, dan moet hij ook niet verder gaan, want anders gaat er niets meer werken
  19. If Session("login") = "" Then
  20. lblInloggen.Text = "Aanmelding mislukt. Probeer opnieuw!"
  21. Else
  22. 'redirect pagina
  23. Response.Redirect("ingelogd.aspx")
  24. End If


Dit werkt om in te loggen, maar is zo lek als een zeef. Wat ik dus zou willen is:

a) Hoe kan ik meerdere waarden ophalen?
Dus niet enkel login_id, ik weet dat ik dan de qry moet veranderen naar * maar hoe van ik het op. ExecuteScalar is voor 1 waarde...

b) Hoe kan ik weten hoeveel resultaten er zijn van de query?
(= mysql_num_rows voor php)

c) Bestaat er ook een simpele hash functie voor wachtwoorden?
(= md5)

hopend op een vlug antwoord, het is voor mijn eindwerk die binnen moet binnen zo'n 10 dagen .

Mocht ik het maar doen in php  

13 antwoorden

Gesponsorde links
Offline Wim - 07/05/2008 20:29 (laatste wijziging 07/05/2008 20:31)
Avatar van Wim Crew algemeen a) ExecuteReader denk ik, die kan je met een while loop normaal. Je moet er wel een object voor defineren dat een "SqlDataReader" is... (dim objReader as sqlDataReader = blablabla.executeReader)doorlopen
b) .count
c) geen idee, prolly wel. dat vindt je op google wel...

//edit:
werk je met ms SQL server?
Offline nemesiskoen - 07/05/2008 20:43
Avatar van nemesiskoen Gouden medaille

PHP expert
van die laatste staat een voorbeeld hoe je met de md5 functie van .NET werkt hier op sitemasters (bij scripts).

Je zou voor meerdere waardes eigenlijk best met een datarow/dataset/datatable werken. Zo kan je ook heel eenvoudig tellen hoeveel gegevens er in zitten.
Offline Abbas - 07/05/2008 21:51
Avatar van Abbas Gouden medaille

Crew .NET
Eerst en vooral:
  1. Imports System.Data.SqlClient
Nu moet je dit niet meer elke keer opnieuw schrijven.
  1. Dim cnnLogin As New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("conGIP").ToString())
  2. Dim strSql As String = "SELECT login_id, login_naam FROM tblLogin WHERE username='" & txtGebruikersnaam.Text & "' AND password='" & txtWachtwoord.Text & "'"
  3. Dim myCommand As New SqlCommand(strSql, cnnLogin)
  4. Dim myReader As SqlDataReader
  5.  
  6. Try
  7. cnnLogin.Open()
  8. myReader = myCommand.ExecuteReader()
  9. If myReader.Read() Then
  10. Dim strID, strNaam As String
  11. strID = myReader.GetValue(0).ToString()
  12. strNaam = myReader.GetValue(1).ToString()
  13. 'Ook hier dan de strNaam in de Session steken
  14. Session("login") = strID
  15. Response.Redirect("ingelogd.aspx")
  16. Else
  17. lblInloggen.Text = "Aanmelding mislukt. Probeer opnieuw!"
  18. End If
  19. Catch myError As Exception
  20. lblInloggen.Text = "Fout opgetreden: " & myError.Message
  21. Finally
  22. cnnLogin.Close()
  23. End Try

Tellen op meerdere rijen doe je zo:
  1. 'Gebruik zoals in bovenstaande code de SqlDataReader "myReader"
  2. Dim aantal As Integer = myReader.RecordsAffected
Al zou ik zoals vage het al zei gebruik maken van een DataTable. Heel handig om hiermee te werken.

MD5-Code:
  1. Dim paswoord As String
  2. Dim invoer As String = TextBox1.Text
  3. Dim x As System.Security.Cryptography.MD5CryptoServiceProvider = New System.Security.Cryptography.MD5CryptoServiceProvider()
  4. Dim bs() As Byte = System.Text.Encoding.UTF8.GetBytes(invoer)
  5. bs = x.ComputeHash(bs)
  6. Dim s As System.Text.StringBuilder = New System.Text.StringBuilder()
  7. For Each b As Byte In bs
  8. s.Append(b.ToString("x2").ToLower())
  9. Next
  10. paswoord = s.ToString()
Offline finduilas - 08/05/2008 07:05
Avatar van finduilas PHP gevorderde Hmm,

Zie dat ik verkeerde categorie poste, het is wel APSX.NET. Is dit van jullie ook zo? (straks anders eens uitproberen)

Alvast bedankt!
Offline Abbas - 08/05/2008 11:11
Avatar van Abbas Gouden medaille

Crew .NET
Ik heb het in VB.NET geplaatst omdat de code in VB.NET is en niet ASP.NET! 
Offline nemesiskoen - 08/05/2008 15:00
Avatar van nemesiskoen Gouden medaille

PHP expert
Citaat:
Zie dat ik verkeerde categorie poste, het is wel APSX.NET. I

aspx is een file type. asp.NET is een type applicatie, VB/VB.NET is de taal waarin het geschreven is.
Offline finduilas - 09/05/2008 21:46
Avatar van finduilas PHP gevorderde Het is nochtans geschreven in ASP.NET 

Finduilas
Offline nemesiskoen - 09/05/2008 23:30
Avatar van nemesiskoen Gouden medaille

PHP expert
Zoals ik al zei: met asp.NET maak je webapplicaties die zijn geschreven in verschillend soort talen. De taal waarvan je hier een stukje laat zien is VB(.NET).
Offline Abbas - 09/05/2008 23:38
Avatar van Abbas Gouden medaille

Crew .NET
Inderdaad, ik denk dat je het verschil precies niet helemaal doorhebt (no offence).

ASP.NET:
De opmaaktaal om webgebaseerde applicaties te maken. Dit doe je met een van de talen die het .NET Framework te bieden heeft. Dit kan zijn:
C#, VB, J#, ...

Het stukje code dat je geeft is VB.NET! 
Offline finduilas - 10/05/2008 13:11 (laatste wijziging 12/05/2008 09:35)
Avatar van finduilas PHP gevorderde
  1. Dim aantal As Integer = myReader.RecordsAffected
  2. lblTest.Text = aantal.ToString

Hierbij krijg ik -1. Hoe komt dit?

EDIT:
Ik heb een tblCategorieen in mijn DB. Nu wil ik ze ophalen met een gridview. Alleen , als ik er een select bijsteek wil ik ook de tekst hiervan wijzigen. Dit kan naar elk woord, zolang het overal hetzelfde is. Maar je hoort me waarschijnlijk al aankomen... Ik wil natuurlijk de categorienaam (cat_naam uit de tblCategorieen). Hoe doe je dit?
Offline Abbas - 12/05/2008 15:18
Avatar van Abbas Gouden medaille

Crew .NET
Die RecordsAffected geldt alleen voor query's die wijzigen, invoegen en verwijderen, niet voor selectie-query's. Anders terwijl je DataReader aan het lezen is er zelf een tellertje tussen plaatsen.

Citaat:
Dit kan naar elk woord, zolang het overal hetzelfde is. Maar je hoort me waarschijnlijk al aankomen... Ik wil natuurlijk de categorienaam (cat_naam uit de tblCategorieen). Hoe doe je dit?
Leg dit eens duidelijk uit! 
Offline finduilas - 12/05/2008 20:55 (laatste wijziging 12/05/2008 21:13)
Avatar van finduilas PHP gevorderde Ik bedoelde dit:
  1. Dim cnnLogin As New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("conGIP").ToString())
  2. Dim strSql As String = "SELECT cat_id,cat_naam FROM tblCategorieen"
  3. Dim myCommand As New SqlCommand(strSql, cnnLogin)
  4. Dim myReader As SqlDataReader
  5. cnnLogin.Open()
  6. myReader = myCommand.ExecuteReader()
  7. While (myReader.Read())
  8. lblCategorieen.Text = lblCategorieen.Text & "<a href=producten.aspx?id=" & myReader.GetValue(0) & ">" & myReader.GetValue(1) & "</a><br/>"
  9. End While


En dan met een gridvieuw de querystring ophalen enz....Het werkt bijna .

EDIT: Gridview niet gebruikt, alles in code . Kan je veel meer mee doen .
Offline Abbas - 12/05/2008 22:42
Avatar van Abbas Gouden medaille

Crew .NET
finduilas schreef:
EDIT: Gridview niet gebruikt, alles in code . Kan je veel meer mee doen .
Daar zit je me even dik verkeerd m'n goede vriend! Met een DataGridView kan je heel wat meer dan simpelweg wat jij doet...
KLIK, een tutorial over de DataGridViewControl in WindowsForms. Het principe is hetzelfde als de GridView in ASP.NET! Je kan daar super veel zaken mee doen.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.206s