Maledetto Where [:x]

martedì 29 luglio 2008 - 16.17

ilgrongo Profilo | Newbie

Salve a tutti

E' da un po' di giorni che sto impazzendo con questa stupida query e non ne riesco a venire a capo e spero tanto in un vostro aiuto.
Praticamente al login, la funzione deve verificare se l'utente esiste nella tabella degli utenti.
Quello che succede che non ho ancora capito come passare al mysqlcommand il valore del textbox che riceve la userid.
Praticamente,dopo aver controllato la validità dei dati inseriti, setto la variabile sql con la query da eseguire, ma a causa dell'opzione WHERE
la ricerca mi fallisce.
In pratica setto la variabile ab=me.UsernameTb.Text
quindi sql = New MySqlCommand("SELECT * FROM utenti where utuserid like '$ab$'", con)
successivamente eseguendo le istruzioni
con.Open()
myData = sql.ExecuteReader
If Not myData.HasRows Then
non trova righe e la ricerca mi fallisce anche se avevo inserito un valore presente nella tabella.
MI dite per cortesia dove ho sbagliato e come si fa per passare una variabile alla stringa di ricerca?

Grazie infinite

Public Class FormLogin
Dim con As MySqlConnection = New MySqlConnection("Data Source=localhost;Database=beautypassion;User ID=root;Password=antonio;")
Dim sql As MySqlCommand
Dim myData As MySqlDataReader
Dim ab As String

Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
Dim check As Boolean
ab = me.UsernameTb.Text
check = True
sql = New MySqlCommand("SELECT * FROM utenti where utuserid like '$ab$'", con)
If ab = "" Then
MsgBox("Campo utente obbligatorio")
check = False
End If

If PasswordTb.Text = "" And check = True Then
MsgBox("Campo password obbligatorio", MsgBoxStyle.ApplicationModal)
check = False
End If

If check = True Then
con.Open()
myData = sql.ExecuteReader
If Not myData.HasRows Then
MsgBox("Non Trovato")
Else
MsgBox("Trovato")
Me.Close()
End If
End If
End Sub

allforum Profilo | Junior Member

Forse dico una stupidaggine, ma non bisogna usare % invece di $ ?

ilgrongo Profilo | Newbie

Grazie per l'aiuto ma purtroppo non funziona

Se provo con..... sql = New MySqlCommand("SELECT * FROM utenti where utuserid like '%ab'", con)
mi restituisce "non trovato"

Se provo invece con........ sql = New MySqlCommand("SELECT * FROM utenti where utuserid like 'antonio'", con)
ossia la string di un utente della tabella mi restituisce "trovato"

RISOLTO !!!!
sql = New MySqlCommand("SELECT * FROM utenti where utuserid = '" & UsernameTb.Text & "'", con)

alx_81 Profilo | Guru

>RISOLTO !!!!
>sql = New MySqlCommand("SELECT * FROM utenti where utuserid =
>'" & UsernameTb.Text & "'", con)
@ilgrongo

Evita la concatenazione.. solito problema di SQL Injection..
leggiti l'articolo scritto di recente da me e David:
http://www.dotnethell.it/articles/SQL-Injection-Tutorial-Security.aspx

non dimenticarti mai di proteggerti!


--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5