Ошибка подключения OleDbConnection

Я написал этот блок кода:

ConnectDB.getConStr();

         string query = "insert into users (memberName,memberSurname,memberEmail,userName,userPassword) values(@mn,@msn,@me,@un,@up)";
        OleDbCommand cmd = new OleDbCommand( query,ConnectDB.getConStr());
        cmd.Parameters.AddWithValue("@mn", txtName.Text);
        cmd.Parameters.AddWithValue("@msn", txtSurname.Text);
        cmd.Parameters.AddWithValue("@me", txtEmail.Text);
        cmd.Parameters.AddWithValue("@un", txtUsername.Text);
        cmd.Parameters.AddWithValue("@up", txtPassword.Text);

        try
        {
            ConnectDB.getConStr().Open();
            cmd.ExecuteNonQuery();
            ConnectDB.getConStr().Close();
            ltrMesaj.Text = "Record has been added";
            Response.Redirect("Login.aspx");
        }
        catch (Exception ex)
        {
            ltrMesaj.Text = ex.Message;
        }

Но я получил такую ​​ошибку: ExecuteNonQuery требует открытого и доступного соединения. Текущее состояние соединения закрыто.

Как я могу решить эту проблему?


person Ahmet Güzel    schedule 14.04.2013    source источник


Ответы (1)


Вы создаете новый instances из connection каждый раз, когда обращаетесь к нему. поэтому создайте только один instance и используйте его так

    OleDbConnection connection= ConnectDB.getConStr();
    string query = "insert into users (memberName,memberSurname,memberEmail,userName,userPassword) values(@mn,@msn,@me,@un,@up)";
        OleDbCommand cmd = new OleDbCommand( query,connection);
        cmd.Parameters.AddWithValue("@mn", txtName.Text);
        cmd.Parameters.AddWithValue("@msn", txtSurname.Text);
        cmd.Parameters.AddWithValue("@me", txtEmail.Text);
        cmd.Parameters.AddWithValue("@un", txtUsername.Text);
        cmd.Parameters.AddWithValue("@up", txtPassword.Text);

        try
        {
            connection.Open();
            cmd.ExecuteNonQuery();
            connection.Close();
            ltrMesaj.Text = "Record has been added";
            Response.Redirect("Login.aspx");
        }
        catch (Exception ex)
        {
            ltrMesaj.Text = ex.Message;
        }
person Sachin    schedule 14.04.2013
comment
Обновил мой ответ и написал код. Посмотрите и дайте мне знать, если возникнут какие-либо проблемы. - person Sachin; 14.04.2013
comment
Я использовал объект SqlConnection, так как пропустил, что вы используете OleDbCommand, поэтому просто измените Sql на OleDb. ну я обновил пост. - person Sachin; 14.04.2013