2010-10-22 44 views
0

我的代码:值不通过从文本框代码

区检查什么登录按钮recordExist做

private void btnLogin_Click(object sender, EventArgs e) 
    { 
     if (this.txtUserName.Text == "" || this.txtPassword.Text == "") 
     { 
      MessageBox.Show("Credentials are missing...", clsVariables._strProjectName, MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 
     else 
     { 
      string _strQuery = "SELECT AtNumConstructorID, TxtConstructorName AS Fullname, tblConstructorDetails.txtUserName FROM tblConstructorDetails WHERE txtUserName = '" + this.txtUserName.Text + "' AND TxtPassword LIKE '" + this.txtPassword.Text + "' "; 
      if (clsFunctions.recordExist(_strQuery, "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(_strQuery, 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(); 

      } 
      #region trash code 2 
      /*string _strUsername = this.txtUserName.Text.Trim(); 
      string _strPassword = txtPassword.Text; 
      string _strSQL = "select * from tblConstructorDetails where Upper(TxtUserName) = '" + _strUsername.ToUpper() +"' and TxtPassword = '" + _strPassword + "'"; 
      if() 
      { 

      } */ 
      #endregion 

      else 
      { 
       clsVariables._intAttempt--; 
       if (clsVariables._intAttempt > 0) 
       { 
        MessageBox.Show("Login failed. Please try again. Only " + Convert.ToString(clsVariables._intAttempt) + " attempts remaining...", "Login Failed", MessageBoxButtons.OK, MessageBoxIcon.Error); 
       } 
       else 
       { 
        MessageBox.Show("Exiting the system", clsVariables._strProjectName, MessageBoxButtons.OK); 
        this.Close(); 
       } 
      } 
     } 
    } 
    #endregion 

代码:

#region Filters the records if exists in the table 
    //Filter if Recort is Exist in the Table. 
    public static bool recordExist(string _sSQL, string _sTable) 
    { 
     long totalRow = 0; 
     //Set the Data Adapter 
     OleDbDataAdapter _oledbAdDa = new OleDbDataAdapter(_sSQL, _olbedbCN); 
     DataSet _ds = new DataSet(); 
     _oledbAdDa.Fill(_ds, _sTable); 
     totalRow = Convert.ToInt32(_ds.Tables[_sTable].Rows.Count); 
     if (totalRow > 0) { return true; } 
     else { return false; } 
    } 
    #endregion 

我现在面临的问题是,当我尝试在相应的文本框中输入值,该值没有传递给查询以检查登录是否可用....

请检查相同,为我提供可能的解决方案和理由,为什么这件事情正在发生的事情....提前

感谢名单....

+0

为什么不删除所有不相关的代码。问题在于,即使当文本在文本框中时,顶部的if语句也是正确的? - 这也会阻止任何人告诉你不要像这样建立sql字符串,因为有人会来一起做令人讨厌的事情。 – 2010-10-22 10:37:17

回答

0

你可能要更改的字符串比较运营商在你的SQL从

=

LIKE

我得到的感觉你错过了问你的问题,真的问题是没有返回数据的SQL。

string _strQuery = "SELECT AtNumConstructorID, TxtConstructorName AS Fullname, tblConstructorDetails.txtUserName FROM tblConstructorDetails WHERE txtUserName LIKE '" 
+ this.txtUserName.Text + "' AND TxtPassword LIKE '" + this.txtPassword.Text + "' "; 

该变化正好在第一行的结尾处。

http://xkcd.com/327/