|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Aug 2011
Messaggi: 1
|
Realizzare un login usando vb.net e confrontando i dati con db access
Ciao a tutti.
Sono nuovissimo di programmazione e di qualsiasi cosa gli ruoti attorno. Vorrei realizzare un sito mio e inserirci un login. Documentandomi su internet ho scritto questo codice dove è una settimana che mi sono "fossilizzato". Ho un po' di confusione in testa e se qualcuno potesse darmi una mano gliene sarei molto grato. Sub Login(ByVal sender As Object, ByVal E As EventArgs) Dim User As String = UsernameText.Text Dim Pass As String = PasswordText.Text Dim connessione As New System.Data.OleDb.OleDbConnection() Dim objcmd As New OleDbDataAdapter("SELECT * FROM Arruola", connessione) Dim ds As New DataSet Dim dt As New DataTable("Arruola") connessione.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0; " & "Data Source=C:\Gioco Asp.Net\Gioco ASP.Net\my.mdb;" objcmd.FillSchema(ds, SchemaType.Source, "Arruola") objcmd.MissingSchemaAction = MissingSchemaAction.AddWithKey objcmd.Fill(ds) objcmd.Fill(dt) Dim C1 As Integer Dim C2 As Integer Dim C3 As Integer For C1 = 0 To ds.Tables.Count - 1 Response.Write("Arruola" & C1 & "<br>") For C2 = 0 To ds.Tables(C1).Columns.Count - 1 Response.Write("--" & ds.Tables(C1).Columns(C2).ColumnName & "<br>") For C3 = 0 To ds.Tables(C1).Rows.Count - 1 Response.Write("----" & ds.Tables(C1).Rows(C3)(C2) & "<br>") Next Next Next Dim rowFoundrowUser As DataRow = ds.Tables("Arruola").Rows.Find(User) Dim rowFoundrowPass As DataRow = ds.Tables("Arruola").Rows.Find(Pass) If Not (rowFoundrowUser Is Nothing) And Not (rowFoundrowPass Is Nothing) Then MsgBox("Arruolato") Else MsgBox("Non 6 Registrato") End If End Sub Il risultato dell'if è sempre nothing e il messagebox mi appare prima della visualizzazione del dataset. Ho inserito la visualizzazione per rendermi conto se effettivamente preleva i dati dal db o no e li preleva. Grazie a tutti |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Sep 2005
Messaggi: 1677
|
prima di tutto la SELECT non è ottimizzata..
ora come ora tiri su tutti i records dal database e poi fai una ricerca nel dataset (che sarebbe un db virtuale in memoria): cosi fai faticare per niente il tuo pc. fai una select cosi: dim sql as string="" sql= " SELECT id FROM Arruola where Username = " ' " & txtUsername.text & " ' AND Password = " ' " & textpassword.Text & "' " ovviamente id è un campo contatore della tua tabella access ,username e password sono campi testo in access nota bene: usa gli apici singoli per passare stringhe ad access (vale per tutti i database) con una if controlli se cè corrispondenza if miaDataTable.Rows.Count > 0 then response.cookie etc etc etc response.redirect("paginaInterna.aspx)" http://msdn.microsoft.com/en-us/library/ms178194.aspx per i cookie. Ultima modifica di Enriko81 : 07-08-2011 alle 17:28. Motivo: corretto codice |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
|
Io non ne so nulla di Basic o VB.net, ma non mi tornano le sequenze di doppi apici...
Poi, va beh, la mia password è Codice:
' OR '' = '
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...) |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Sep 2005
Messaggi: 1677
|
Quote:
non sai nulla neanche di database aggiungo io. In vb.net le stringhe si concatenano con & e gli apici singoli servono per passare valori-stringa al database. |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
|
Ah, ok, grazie! Ciao!
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...) |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:33.




















