2012-06-03 18 views
5

साथ मैं एक अपवाद अमान्य स्तंभ नाम 'झूठी' हो रही है बयानअपवाद t "अमान्य स्तंभ नाम 'झूठी' SqlConnection

reader = cmd.ExecuteReader(CommandBehavior.SingleRow); 

मैं समझ रहा हूँ इस के साथ क्या करने के लिए कुछ हो सकता है पर एसक्यूएल के बूलियन प्रकार एक "बिट" किया जा रहा है और यह 0 करने के लिए false रूपांतरित नहीं हो। आपको लगता है कि कैसे कम है, या है कि इस मुद्दे को यहाँ?

public override bool ValidateUser(string username, string password) 
    { 
     bool isValid = false; 

     SqlConnection conn = new SqlConnection(connectionString); 
     SqlCommand cmd = new SqlCommand("SELECT Password, IsApproved FROM Users" + 
       " WHERE Email = @Email AND ApplicationName = @ApplicationName AND IsLockedOut = False", conn); 

     cmd.Parameters.Add("@Email", SqlDbType.NVarChar, 128).Value = username; 
     cmd.Parameters.Add("@ApplicationName", SqlDbType.NVarChar, 255).Value = m_ApplicationName; 

     SqlDataReader reader = null; 
     bool isApproved = true; 
     string pwd = ""; 

     try 
     { 
      conn.Open(); 

      reader = cmd.ExecuteReader(CommandBehavior.SingleRow); 

      if (reader.HasRows) 
      { 
       reader.Read(); 
       pwd = reader.GetString(0); 
       isApproved = reader.GetBoolean(1); 
      } 
      else 
      { 
       return false; 
      } 

      reader.Close(); 

      if (CheckPassword(password, pwd)) 
      { 
       if (isApproved) 
       { 
        isValid = true; 

        SqlCommand updateCmd = new SqlCommand("UPDATE Users SET LastLoginDate = @LastLoginDate" + 
                  " WHERE Email = @Email AND ApplicationName = @ApplicationName", conn); 

        updateCmd.Parameters.Add("@LastLoginDate", SqlDbType.DateTime).Value = DateTime.Now; 
        updateCmd.Parameters.Add("@Email", SqlDbType.NVarChar, 255).Value = username; 
        updateCmd.Parameters.Add("@ApplicationName", SqlDbType.NVarChar, 255).Value = m_ApplicationName; 

        updateCmd.ExecuteNonQuery(); 
       } 
      } 
      else 
      { 
       conn.Close(); 

       UpdateFailureCount(username, "password"); 
      } 
     } 

उत्तर

6

उपयोग IsLockedOut =0 के लिए जाँच के लिए असत्य।

IsLockedOut बिट डेटाटाइप वाला एक फ़ील्ड है जो झूठी के लिए 0 स्टोर करता है और सत्य के लिए 1 स्टोर करता है।

तो एक ही/

क्वेरी में उपयोग करते हैं IsLockedOut varchar क्षेत्र तो IsLockedOut='False' का प्रयोग करें स्ट्रिंग तुलना की तुलना करते हुए है।

+0

उसने ऐसा किया। मैं तेज़ी से सीख रहा हूँ! यह मेरी पहली बार कोई प्रोग्रामिंग कर रहा है। तुरंत जवाब के लिए धन्यवाद। – RyanJMcGowan

+0

बिग धन्यवाद! वह आखिरी बग था। जान में जान आई!!! – RyanJMcGowan

संबंधित मुद्दे