Création De Formulaire De Connexion À L'Aide De Visual Studio
Je suis nouveau sur Visual Studio 2010 et je suis en train de créer un formulaire de Connexion.
J'ai ce code.
OdbcConnection con = new OdbcConnection("host=localhost;usr=root;password=admin;db=timekeeping;");
OdbcCommand cmd = new OdbcCommand("SELECT * FROM receptionist WHERE username = '" + username_login.ToString() + "' AND password = '" + password_login.ToString() + "';");
cmd.Connection = con;
con.Open();
OdbcDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
if (reader.GetString(0) != 1)
{ return false; }
else
{ return true; }
}
cmd.Connection.Close();
reader.Dispose();
cmd.Dispose();
Il y a des erreurs, mais je ne sais pas quel est le problème avec ça.
Voici une capture d'écran:
En espérant que quelqu'un ca de m'aider..
Grâce
Vous devez vous connecter pour publier un commentaire.
Votre code est vulnérable à L'Injection SQL. N'utilisez jamais de concaténations de chaîne lors de la construction de requêtes SQL. Utiliser des requêtes paramétrées à la place:
et ensuite appeler comme ceci:
Aussi, si vous utilisez SQL Server, vous êtes mieux avec SqlConenction au lieu de pilote ODBC.
OdbcConnection
avecSqlConnection
et à l'aide d'une bonne chaîne de connexion: connectionstrings.com/sql-server-2005.Vous ne pouvez pas comparer une chaîne de type int qui vous tentent ici:
if (reader.GetString(0) != 1)
Vous pouvez utiliser GetInt32:
http://msdn.microsoft.com/en-us/library/system.data.odbc.odbcdatareader.getint32.aspx
Et vous ne devriez pas créer votre SQL comme ça, mais utiliser des paramètres au lieu de simplement la construction d'une chaîne de caractères. Vous êtes vulnérable à l'injection SQL avec cette façon de construire votre code SQL.
Bien le message d'erreur est assez OdbcDataReader.GetString retourne une chaîne de caractères non un int. Par conséquent, vous ne pouvez pas comparer. Voir MSDN
Vous voulez probablement pour vérifier la longueur de celui-ci?
if (reader.GetString(0).Length != 1)
Remplacer dans votre code cette ligne
avec cette
Deuxième,
Dans votre userLogin() la méthode que vous êtes tryin pour renvoyer une valeur alors que la reeturn est de type void. Modifier le type de retour.
D'essayer de comparer une
int
et unstring
ne veut pas vraiment travailler.vous pouvez également faire
Toutefois, dans certains cas, cela peut ne pas fonctionner.
Et en plus, je préfère utiliser
GetSqlString
et de le convertir au lieu d'utiliserGetString
parce que j'ai eu trop de problèmes avecnull
s quand j'étais codage.