2010-10-19 4 views
0

Je crée une application de bureau en C# où mon code est:données non transférer de la zone de texte pour interroger

private void btnLogin_Click(object sender, EventArgs e) 
     { 
      if (clsFunctions.recordExist("SELECT AtNumConstructorID, TxtConstructorName AS Fullname FROM tblConstructorDetails WHERE txtUserName = '" + txtUserName.Text + "' AND TxtPassword LIKE '" + txtPassword.Text + "' ", "tblConstructorDetails") == true) 
      { 
       clsVariables._sTimeLogin = DateTime.Now.ToLongTimeString();//recording the time of login in the CES 
       long totalRow = 0; 
       //Set the Data Adapter 
       OleDbDataAdapter da = new OleDbDataAdapter("select AtNumConstructorID, TxtConstructorName AS Fullname, tblConstructorDetails.txtUserName FROM tblConstructorDetails WHERE txtUserName =" + txtUserName.Text, clsConnections._olbedbCN); 
       DataSet ds = new DataSet(); // creating a dataset to enter the values in the dataadapter 
       da.Fill(ds, "tblConstructorDetails"); 
       totalRow = ds.Tables["tblConstructorDetails"].Rows.Count - 1; 
       clsVariables._sContId = Convert.ToInt32(ds.Tables["tblConstructorDetails"].Rows[0].ItemArray.GetValue(0)); 
       clsVariables._sConstructor = ds.Tables["tblConstructorDetails"].Rows[0].ItemArray.GetValue(1).ToString(); 
       clsVariables._sUserID = ds.Tables["tblConstructorDetails"].Rows[0].ItemArray.GetValue(2).ToString(); 
       clsUserLogs.RecordLogin(clsVariables._sTimeLogin, clsVariables._sContId); 
       clsApplication._boolAPP_CONNECTED = true; 
       this.Close(); 

      } 
     } 

Note: clsFunctions: Une classe où toutes les fonctions communes sont écrites recordexist: fonction qui renvoie true si un enregistrement est disponible.

Pour recordexist, je fournis une requête. les données de la zone de texte est le transfert pas à la requête et je peux faire, pourquoi cela se produit ... S'il vous plaît aider SOS ...

+5

Vous effectuez une comparaison 'like' sur le mot de passe? WTF? Si quelqu'un entre un «%», il pourra se connecter comme n'importe quel utilisateur. –

+0

ce code est faux pour tant de raisons. aucun sql paramétré, aucun enregistrement de données nulles, etc etc – RPM1984

+0

@klausbyskov: c'était juste un code démo que j'ai essayé s'il pouvait fonctionner avec% caractères .... –

Répondre

0

Si vous voulez faire le cas de mot de passe utilisé insensible ceci:

UPPER(TxtPassword) = UPPER('" + txtPassword.Text + "') " 

Ignore ci-dessous ne l'a pas vu était pas un webapp

le problème doit être en vous page ASPX ou comment vous faites référence à cette page. S'il vous plaît poster l'aspx aussi.

Ma conjecture est que vous n'êtes pas en train d'accrocher l'événement dans le droit ou de ne pas déclarer correctement txtUserName.

+0

C'est une application de bureau, donc en gros le problème doit être qu'il fait référence les mauvaises zones de texte (ou que rien n'a été entré) –

+0

@klausbyskov: quelle serait la solution possible pour faire cela? –

+0

@sohil: il n'y a aucun moyen de savoir sans voir le reste de votre code pour le formulaire. – Hogan

Questions connexes