J'ai fait une fonction qui vérifie si un nom d'utilisateur existe déjà dans une table, à utiliser avec la validation de la création de compte dans C #. Cependant, même si je sais que l'enregistrement existe déjà, il retourne toujours que le nom d'utilisateur est disponible. Je ne comprends pas pourquoi, comme lorsque vous recherchez une réponse à cette question, j'ai suivi ce que j'ai été recommandé et qu'il a toujours le même problème, donc toute aide serait grandement appréciée.
J'ai essayé de supprimer les Apostrophes, remplaçant le "= "Avec comme, en utilisant un compte (*) pour vérifier les instances mais toujours en vain sans p>
3 Réponses :
Essayez ce texte SQL
string Query = "SELECT Username FROM Users WHERE Username= @user";
SqlCommand checkUsername = new SqlCommand(Query, ConnectionString.GetConnection());
checkUsername.Parameters.AddWithValue("@user", uName);
var result= checkUsername.ExecuteScalar();
if (result==null)
{
return true;
}
else
{
return false;
}
Essayé cela, mais il jette juste une erreur «référence d'objet non définie à une instance d'un objet» 'renvoyé null'. J'ai essayé une méthode similaire à celle-ci précédemment, mais j'ai toujours eu le même problème que je rencontre maintenant. Quand j'ai du mal à codé dans le nom d'utilisateur, je savais qu'il y avait là, il a trouvé le disque et fonctionnait correctement, donc je ne suis pas vraiment sûr pourquoi ça ne fonctionnera pas
Avez-vous utilisé USERNAME = @ User? au lieu de nom d'utilisateur = '@ User'
Supprimez la citation unique de @user dans le texte SQL. (Où USERNAME = @user). J'espère que cela résoudra votre problème. sinon vérifier la valeur de la variable de la uname
@ExceptionHandler exécutesCalar () code> renvoie un objet, pas un int. Cela peut être null, comme on le voit dans le code d'origine de H3Rcul35. Un-cotting @user code> est la seule chose que vous devez faire pour corriger le code.
En utilisant mon travail original et simplement enlever les citations autour de @user a fait le tour. S'avère que j'avais également fait une erreur défavorable de sommeil avec la passe lorsque la fonction a été appelée que je manquais, passant dans txtuserid.text au lieu de txtuser.text -__-
Félicitations! De toute façon j'ai corrigé ma réponse je suppose
public bool isUsernameAvailable(string uName)
{
string sql = "SELECT Username FROM Users WHERE Username= @user";
string connString = ConnectionString.GetConnection();
using (SqlConnection connection = new SqlConnection(connString))
using (SqlCommand command = new SqlCommand(sql, connection))
{
var uNameParam = new SqlParameter("user", SqlDbType.String);
uNameParam.Value = uName;
command.Parameters.Add(uNameParam);
var exists = command.ExecuteScalar();
if (exists != null)
{
return false;
}
else
{
return true;
}
}
}
Can you try something like this? I have made a few assumptions of your code, but hopefully this will work.Essentially, removing the quotes was all that was required, however the code below ensures the SqlConnection and SqlCommand are correctly disposed of as these implement IDisposable. Additionally, using Parameters. Add over AddWithValue is only a small a bit of work but allows your parameter to be explicit in type.
Upvote pour l'utilisation de en utilisant code>. Vous voudrez peut-être élaborer ce que vous avez résolu exactement. Avec le code copié complet, il est facile de manquer;)
BOOL PUBLIC BOOL ISUSERNAMABLEABLE (String Uname)
{
Connexionstring.opencenConnection (); espère que vous avez besoin de la valeur réelle lorsque le nom d'utilisateur n'existe pas p> p>
Avez-vous essayé de travailler dur le nom d'utilisateur, pour vous assurer que ce n'est pas la DB. Par exemple: sélectionnez Nom d'utilisateur à partir des utilisateurs où USERNAME = 'HarAMBE'
Lorsque son code dur est correctement codé correctement et reconnaît l'enregistrement
S'il vous plaît voir ma réponse pour une aide à l'amélioration de ce code. Cependant, je suis content que vous ayez une réponse.