سؤال

I wrote these code block:

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;
        }

But I got an error like this:ExecuteNonQuery requires an open and available Connection. The connection's current state is closed.

How can I overcome this issue?

هل كانت مفيدة؟

المحلول

You are creating new instances of connection everytime you are accessing it. so create only one instance and use it like this

    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;
        }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top