2009-01-25 9 views
2

J'ai construit une logique que si j'entre la valeur dupliquée je devrais obtenir le message comme: "UserName existe déjà, essayez un autre nom" mais j'obtiens le message différent: "Violation de contrainte UNIQUE KEY" Nom d'utilisateur ': impossible d'insérer une clé dupliquée dans l'objet' Connexion 'L'instruction a été interrompue. " Dans la table Login UserName défini comme clé unique. Voici le code:Besoin d'aide dans les contraintes clés uniques

protected void BtnSubmit_Click(object sender, EventArgs e) 
{ 
    if (!Page.IsValid) 
     return; 

    NewuserBAL NUB = new NewuserBAL(); 

    int intResult = 0; 

    string UserName = TxtUserName.Text; 
    string Password = PWD.Text; 
    string EmailId = Email.Text; 


    try 
    { 
     intResult=NUB.newinsert(UserName, Password, EmailId); 
     if (intResult > 0) 

      lbldisplay.Text = "New Account Created Successfully"; 
     else 
      lbldisplay.Text = "UserName[<b>"+TxtUserName.Text+"</b>] already exists,try another name";     

     TxtUserName.Text = ""; 
     PWD.Text = ""; 
     CnfrmPwd.Text = ""; 
     Email.Text = ""; 
    } 



    catch(Exception ee) 
    { 
     lbldisplay.Text = ee.Message.ToString(); 


    } 

    finally 
    { 
     NUB = null; 


    } 

S'il vous plaît quelqu'un m'aider où j'ai fait une erreur.

Merci, Masum

Répondre

0

Votre base de données est (correctement) la capture et empêcher la tentative d'ajouter un utilisateur en double parce que le nom d'utilisateur est défini comme une clé unique. C'est une bonne chose. Votre programme doit capturer l'exception, l'interpéter et informer l'utilisateur en conséquence.

EDIT: Ou, as empi says, recherchez un utilisateur en double avant de tenter l'insertion. Vous devrez toujours capturer l'exception de contrainte de clé, dans le cas où deux utilisateurs essaient de créer les mêmes utilisateurs en même temps.

+0

Mais je veux que ce message soit "NomUtilisateur existe déjà, essayez un autre nom" mais je ne reçois pas mon message de personnalisation. –

+0

vous devez attraper exception à cette ligne intResult = NUB.newinsert (UserName, Password, EmailId); et si vous obtenez l'exception de contrainte unique (vérifiez son type) affichez votre message personnalisé non lbldisplay.Text = ee.Message.ToString(); – empi

3

Vous obtenez l'exception car vous essayez d'insérer l'utilisateur avec le même login. Vous avez deux options:

a. avant d'insérer des données, vérifiez explicitement si l'utilisateur existe (requête de sélection supplémentaire)

b. attraper l'exception "Violation de la contrainte UNIQUE KEY" et ensuite afficher votre message personnalisé

Questions connexes