PDA

View Full Version : Realizzare un login usando vb.net e confrontando i dati con db access


Darnart
06-08-2011, 12:10
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

Enriko81
07-08-2011, 17:05
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.

Gimli[2BV!2B]
07-08-2011, 19:09
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 è' OR '' = '

Enriko81
07-08-2011, 19:33
;35710097']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 è' OR '' = '


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.

Gimli[2BV!2B]
07-08-2011, 19:37
Ah, ok, grazie! Ciao!