Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    4

    Creazione login a un database access usando vb.net

    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 & "
    ")
    For C2 = 0 To ds.Tables(C1).Columns.Count - 1
    Response.Write("--" & ds.Tables(C1).Columns(C2).ColumnName & "
    ")
    For C3 = 0 To ds.Tables(C1).Rows.Count - 1
    Response.Write("----" & ds.Tables(C1).Rows(C3)(C2) & "
    ")
    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. #2
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    119
    Find, mi risulta funzioni solo sulla chiave principale (campo unico) senza wildcard.

    COME: Trova un DataRow specificato da Utilizzo del metodo Find di DataRowCollection in Visual Basic .NET

    Per fare una ricerca come la tua utilizza i filtri.
    Avendo a che fare solo con una datatable puoi utilizzare solo il metodo select.

    Metodo DataTable.Select (String)

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    4
    Innanzi tutto grazie per la risposta.
    Ho guardato quello che mi hai consigliato tu e ho riscritto il codice in questo modo:

    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
    dt = ds.Tables("Arruola")
    connessione.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0; " & "Data Source=C:\Gioco Asp.Net\Gioco ASP.Net\LeNerderieDiDarnartDatabase.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 & "
    ")
    For C2 = 0 To ds.Tables(C1).Columns.Count - 1
    Response.Write("--" & ds.Tables(C1).Columns(C2).ColumnName & "
    ")
    For C3 = 0 To ds.Tables(C1).Rows.Count - 1
    Response.Write("----" & ds.Tables(C1).Rows(C3)(C2) & "
    ")
    Next
    Next
    Next


    Dim FoundRowsUser As DataRow()
    Dim FoundRowsPass As DataRow()

    FoundRowsUser = dt.Select(User)
    FoundRowsPass = dt.Select(Pass)

    If Not (FoundRowsUser Is Nothing) And Not (FoundRowsPass Is Nothing) Then
    MsgBox("Registrato")
    Else
    MsgBox("Non 6 registrato")
    End If
    End Sub

    Ora mi restituisce l'errore: Il valore non può essere Null. Nome parametro: dataTable e indicando
    objcmd.Fill(dt)

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    119
    datatable.select restituisce un ARRAY di datarow
    è ovvio che la select deve essere unica
    Dim dr() As DataRow = datatable.select(String.Format("utente = {0} and password = {1}",UsernameText.Text, PasswordText.Text))
    okkio che l'ho scritto qui

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    4
    ho capito il perchè della Select unica ma mi restituisce ancora lo stesso errore

    Il valore non può essere Null. Nome parametro: dataTable
    e indicando objcmd.Fill(dt)

    Grazie della pazienza.

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    119
    Ovviamente devi testare prima il risultato nullo
    if myarray is nothing then ...
    end if
    inizia il ciclo.

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480

    Moderazione

    Le domande su ASP.NET sono ospitate in un forum dedicato.
    Sposto la discussione e invito a postare nella sezione corretta in futuro.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    4
    Mi scuso per aver postato nel forum sbagliato. La prossima volta farò più attenzione.



    Ho riscritto il codice in questo modo e ammetto che la confusione aumenta sempre di più.



    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
    dt = ds.Tables("Arruola")
    Dim dtArray As New ArrayList
    Dim FoundRowsUserPass As DataRow()
    connessione.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0; " & "Data Source=C:\Gioco Asp.Net\Gioco ASP.Net\LeNerderieDiDarnartDatabase.mdb;"

    objcmd.FillSchema(ds, SchemaType.Source, "Arruola")
    objcmd.MissingSchemaAction = MissingSchemaAction.AddWithKey
    objcmd.Fill(ds)

    If dtArray Is Nothing Then
    objcmd.Fill(dt)
    FoundRowsUserPass = dt.Select(String.Format("Username = {0} and Password = {1}", UsernameText.Text, PasswordText.Text))
    If Not (FoundRowsUserPass Is Nothing) Then
    MsgBox("Registrato")
    Else
    MsgBox("Non 6 registrato")

    End If
    Else
    FoundRowsUserPass = dt.Select(String.Format("Username = {0} and Password = {1}", UsernameText.Text, PasswordText.Text))
    If Not (FoundRowsUserPass Is Nothing) Then
    MsgBox("Registrato")
    Else
    MsgBox("Non 6 registrato")

    End If
    End If


    Molto probabilmente è un grosso pasticcio quello che ho scritto e l'errore che mi da ora è il seguente:

    Riferimento a un oggetto non impostato su un'istanza di oggetto indicando la Select nell' Else.
    Grazie ancora.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.