Computer Wiz99 Ответов: 1

ExecuteScalar: свойство соединения не было инициализировано.


У меня есть эта ошибка, когда я отлаживаю этот код. "ExecuteScalar: свойство соединения не было инициализировано." Что я сделал не так? Я получаю эту ошибку здесь: int userExists = (int)sqlCmd.ExecuteScalar();. И если я получаю его там, я также получу его здесь: int correctPassword = (int)sqlCmd.Executescalar так();

protected void Page_Load(object sender, EventArgs e)
{
    TextBoxEA.Focus();
 
    if (!IsPostBack)
    {
        Session["counter"] = 0;    
    }
    else
    {
        
        Session["counter"] = Convert.ToInt32(Session["counter"]) + 1;
 
        (SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["HotConnectionString"].ConnectionString))
        {
            con.Open();
 
            string cmdStr = "Select count(*) from Table22 where EmailAddress=@TextBoxEA";
            SqlCommand sqlCmd = new SqlCommand(cmdStr);
            sqlCmd.Parameters.Add("@TextBoxEA", TextBoxEA.Text);
            int userExists = (int)sqlCmd.ExecuteScalar();
 
            cmdStr = "Select count(*) from Table22 where EmailAddress = @TextBoxEA AND Password=@TextBoxPW";
            sqlCmd = new SqlCommand(cmdStr);
            sqlCmd.Parameters.Add("@TextBoxEA", TextBoxEA.Text);
            sqlCmd.Parameters.Add("@TextBoxPW", TextBoxPW.Text);
            int correctPassword = (int)sqlCmd.ExecuteScalar();

            string msg = "";
            if (userExists == 0)
                msg = "alert('User Name Does Not Exist You Must Fill Out Registration First');";
            else if (correctPassword == 0)
                msg = "alert('Invalid UserName / Password');";
            else if (Convert.ToInt32(Session["counter"]) >= 3)
            {
                msg = "alert('The Account is Locked');";

                cmdStr = "Update Table22 SET isLocked = true where EmailAddress = @TextBoxEA";
                sqlCmd = new SqlCommand(cmdStr);
                sqlCmd.Parameters.Add("@TextBoxEA", TextBoxEA.Text);
                sqlCmd.ExecuteNonQuery();
            }
            if (msg.Length > 0)
            {
                ScriptManager.RegisterStartupScript(this, this.GetType(), "script", msg, true);
                TextBoxEA.Text = string.Empty;
            }
             con.Close();
        }   

    }
}

1 Ответов

Рейтинг:
7

Debabrata_Das

Привет друг, попробуйте следующие изменения кода:

string cmdStr = "Select count(*) from Table22 where EmailAddress=@TextBoxEA";
            SqlCommand sqlCmd = new SqlCommand(cmdStr, con);
            sqlCmd.Parameters.Add("@TextBoxEA", TextBoxEA.Text);
            int userExists = (int)sqlCmd.ExecuteScalar();


Вы пропустили, чтобы добавить объект подключения с помощью объекта sqlcommand.


Computer Wiz99

Debabrete_Das, который исправил мою проблему входа в систему, но неудачные попытки входа в систему не работают. Что я сделал не так в своем коде?

Debabrata_Das

Привет, приятно слышать, что ваша первая проблема решена. Не могли бы вы конкретизировать свою другую проблему, с которой вы столкнулись?

Computer Wiz99

Извините за ожидание, когда я тестирую код, сообщения действительно появляются, но когда я ввожу имя пользователя и неправильный пароль три раза, учетная запись не блокируется. Почему это так?