'databank connectie
Dim cnnLogin As New Data.SqlClient.SqlConnection
'zeggen met welke connectionstring hij moet verbinden
cnnLogin.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings("conGIP").ToString
'commando object
Dim strSql As String
strSql = "SELECT login_id FROM tblLogin WHERE username='" & txtGebruikersnaam.Text & "' AND password='" & txtWachtwoord.Text & "'"
Dim cmdId As New Data.SqlClient.SqlCommand(strSql, cnnLogin)
'open de verbinding
cnnLogin.Open()
'voer commando uit
Dim strID As String
strID = cmdId.ExecuteScalar
'sluit de verbinding
cnnLogin.Close()
'ID in session steken
Session("login") = strID
'als er geen ID in de session zit, dan moet hij ook niet verder gaan, want anders gaat er niets meer werken
If Session("login") = "" Then
lblInloggen.Text = "Aanmelding mislukt. Probeer opnieuw!"
Else
'redirect pagina
Response.Redirect("ingelogd.aspx")
End If
'databank connectie
Dim cnnLogin AsNew Data.SqlClient.SqlConnection
'zeggen met welke connectionstring hij moet verbinden
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 .
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...
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.
Dim cnnLogin As New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("conGIP").ToString())
Dim strSql As String = "SELECT login_id, login_naam FROM tblLogin WHERE username='" & txtGebruikersnaam.Text & "' AND password='" & txtWachtwoord.Text & "'"
Dim myCommand As New SqlCommand(strSql, cnnLogin)
Dim myReader As SqlDataReader
Try
cnnLogin.Open()
myReader = myCommand.ExecuteReader()
If myReader.Read() Then
Dim strID, strNaam As String
strID = myReader.GetValue(0).ToString()
strNaam = myReader.GetValue(1).ToString()
'Ook hier dan de strNaam in de Session steken
Session("login") = strID
Response.Redirect("ingelogd.aspx")
Else
lblInloggen.Text = "Aanmelding mislukt. Probeer opnieuw!"
End If
Catch myError As Exception
lblInloggen.Text = "Fout opgetreden: " & myError.Message
Finally
cnnLogin.Close()
End Try
Dim cnnLogin AsNew SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("conGIP").ToString())
Dim strSql AsString="SELECT login_id, login_naam FROM tblLogin WHERE username='"& txtGebruikersnaam.Text&"' AND password='"& txtWachtwoord.Text&"'"
Dim paswoord As String
Dim invoer As String = TextBox1.Text
Dim x As System.Security.Cryptography.MD5CryptoServiceProvider = New System.Security.Cryptography.MD5CryptoServiceProvider()
Dim bs() As Byte = System.Text.Encoding.UTF8.GetBytes(invoer)
bs = x.ComputeHash(bs)
Dim s As System.Text.StringBuilder = New System.Text.StringBuilder()
For Each b As Byte In bs
s.Append(b.ToString("x2").ToLower())
Next
paswoord = s.ToString()
Dim paswoord AsString
Dim invoer AsString= TextBox1.Text
Dim x As System.Security.Cryptography.MD5CryptoServiceProvider=New System.Security.Cryptography.MD5CryptoServiceProvider()
Dim bs()AsByte= System.Text.Encoding.UTF8.GetBytes(invoer)
bs = x.ComputeHash(bs)
Dim s As System.Text.StringBuilder=New System.Text.StringBuilder()
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).
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#, ...
Dim aantal As Integer = myReader.RecordsAffected
lblTest.Text = aantal.ToString
Dim aantal As Integer = myReader.RecordsAffected
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?
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?
Dim cnnLogin As New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("conGIP").ToString())
Dim strSql As String = "SELECT cat_id,cat_naam FROM tblCategorieen"
Dim myCommand As New SqlCommand(strSql, cnnLogin)
Dim myReader As SqlDataReader
cnnLogin.Open()
myReader = myCommand.ExecuteReader()
While (myReader.Read())
lblCategorieen.Text = lblCategorieen.Text & "<a href=producten.aspx?id=" & myReader.GetValue(0) & ">" & myReader.GetValue(1) & "</a><br/>"
End While
Dim cnnLogin AsNew SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("conGIP").ToString())
Dim strSql As String ="SELECT cat_id,cat_naam FROM tblCategorieen"
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.