2010-06-04 4 views
1

Possible en double:
Checking for an SQL result in VB.NETComment vérifier si la table est vide dans VB.net

Je formulaire d'identification qui est rediriger l'utilisateur pour leurs niveaux mais avant que s'il y a aucun utilisateur sur la table de données que je voudrais rediriger pour créer un formulaire d'administration. J'ai tous les formulaires mais je n'ai pas réussi à les rediriger car je ne sais pas comment créer une déclaration. Pourriez-vous s'il vous plaît m'aider à propos de la solution.

Dim con As SqlCeConnection 
    Dim command As SqlCeCommand 
    con = New SqlCeConnection("Persist Security Info=False;Data Source=.\database.sdf;Password=********;File Mode=shared read") 
    con.Open() 
    command = New SqlCeCommand("select * from users where Name=? and Password=?", con) 

    Dim param1, param2 As SqlCeParameter 

    param1 = New SqlCeParameter("Name", uname.Text) 

    param2 = New SqlCeParameter("Password", pwd.Text) 

    command.Parameters.Add(param1) 
    command.Parameters.Add(param2) 

    Dim reader As SqlCeDataReader = command.ExecuteReader 

    If (reader.Read = True) Then 
     role = reader.GetString(1) 

    Else 
     MsgBox("Invalid Login") 
    End If 

J'ai ce code qui fonctionne. Que écrire pour

Sous frmlogin_Load privé (expéditeur de ByVal comme System.Object, ByVal e comme System.EventArgs) Poignées MyBase.Load

End Sub 
+0

C'est un double de http://stackoverflow.com/questions/1831920/checking-for-an-sql-result-in-vb-net –

Répondre

2

Je recommande d'essayer la propriété de DataReader HasRows pour déterminer si une ou plusieurs lignes a été renvoyé à l'objet DataReader.

if (reader.HasRows) 
{ 

    reader.Read(); 
    role = reader.GetString(1) 

} 
else 
{ 
    // invalid login 
} 
+0

Merci beaucoup de m'avoir aidé. – Hakan

1

Pas sûr que je comprends parfaitement votre question, mais si la table est vide alors reader.Read() évaluerait à False.

Je pense que ce que vous voulez, c'est une instruction SQL qui vérifie la table Count of the users. Quelque chose comme

command = New SqlCeCommand("SELECT COUNT(Name) as NameCount FROM Users", con) 

Ensuite, vous évaluer le nombre en faisant quelque chose comme

Dim reader as SqlCeDataReader = command.ExecuteReader() 
While(reader.Read()) 
    if reader("NameCount") = 0 then 
     'Redirect to Admin Form 

    else 
     'Run all your current logic here to find the user from the DB 
    end if 
End While 
+0

Ok, mais comment déclarer Namecount? Désolé pour mon mauvais anglais. – Hakan

+0

Désolé - NameCount doit être entre guillemets, car il fait référence à un nom de colonne dans votre base de données. Je suis en train de changer mon message au lecteur ("NameCount") maintenant. – Overhed

Questions connexes