PDA

View Full Version : [VB.NET e SQL SERVER 2008] Connessione e query


Fabio7586
12-03-2010, 15:38
Ciao, non ho mai lavorato su database sql server da vb.net, ed ho scritto questo codice:

Imports System.Windows.Forms
Imports System.Data.SqlClient
Imports System.Data.SqlClient.SqlConnection
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ConnString As String = "Data Source=MARCELLA-PC;Initial Catalog=superclean;User Id=sa;Password=fabio;"
Dim sqlcon As New SqlConnection(ConnString)
Dim sql As String = "SELECT USERNAME,PASSWORD FROM UTENTI WHERE USERNAME=@USERN AND PASSWORD=@PASSW"
Dim cmd As New SqlCommand(sqlcon, sql)
Dim user As String
Dim pass As String

cmd.Parameters.Add("@USERN", SqlDbType.Text)
cmd.Parameters("@USERN").Value = user
cmd.Parameters.Add("@PASSW", SqlDbType.Text)
cmd.Parameters("@PASSW").Value = pass
sqlcon.Open()
cmd.ExecuteReader()
sqlcon.Close()


End Sub
End Class
sto tentando di fare una autenticazione su database sql server ma segna errore:
Errore 1 Impossibile convertire il valore di tipo 'System.Data.SqlClient.SqlConnection' in 'String'. C:\Users\Marcella\Desktop\Fabio\Superclean\Superclean\Form1.vb 9 35 Superclean


e


Errore 2 Impossibile convertire il valore di tipo 'String' in 'System.Data.SqlClient.SqlConnection'. C:\Users\Marcella\Desktop\Fabio\Superclean\Superclean\Form1.vb 9 43 Superclean


Mi aiutate?

MarcoGG
13-03-2010, 14:53
Hai semplicemente invertito il testo String della query con la SqlConnection, nel costruttore dell'SqlCommand :

Dim cmd As New SqlCommand(sqlcon, sql)

Correggi in :
Dim cmd As New SqlCommand(sql, sqlcon)

;)

Fabio7586
15-03-2010, 11:00
Hai semplicemente invertito il testo String della query con la SqlConnection, nel costruttore dell'SqlCommand :

Dim cmd As New SqlCommand(sqlcon, sql)

Correggi in :
Dim cmd As New SqlCommand(sql, sqlcon)

;)

Ciao, come sempre puntuale nei tuoi aiuto :)
Vorrei chiederti una ulteriore cosa, ho cercato anche su google, ma non ho trovato nulla. Se non ti è di disturbo, mi spiegheresti come fare una volta inserito username e password a restituire l'errore di login fallito se la query non ha trovato risultati?
Io lo faccio già, ma mi sembra un metodo (anzi lo è) molto macchinoso e per così dire "poco sicuro" e inefficiente; in pratica lancio la query, vado a riempire un datagridview con il risultato e poi mi vado a pescare dalle celle user e password per andarle a verificare con quelle in textbox.

MarcoGG
15-03-2010, 19:20
mi spiegheresti come fare una volta inserito username e password a restituire l'errore di login fallito se la query non ha trovato risultati?
Io lo faccio già, ma mi sembra un metodo (anzi lo è) molto macchinoso e per così dire "poco sicuro" e inefficiente; in pratica lancio la query, vado a riempire un datagridview con il risultato e poi mi vado a pescare dalle celle user e password per andarle a verificare con quelle in textbox.

No, per questo task non hai bisogno di un DataGridView, e nemmeno del DataReader. Ti basta un semplice SqlCommand.ExecuteScalar, che riestituisce un Object, che puoi naturalmente castare ad Integer. Se è = 0, allora l'utente ha sbagliato User, o Password, o entrambi...:
http://msdn.microsoft.com/it-it/library/system.data.sqlclient.sqlcommand.executescalar.aspx