【问题标题】:OleDbConnection Connection ErrorOleDbConnection 连接错误
【发布时间】:2013-04-14 19:02:11
【问题描述】:

我写了这些代码块:

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 需要一个打开且可用的连接。连接的当前状态为关闭。

我该如何解决这个问题?

【问题讨论】:

    标签: asp.net c#-4.0 oledbconnection executenonquery


    【解决方案1】:

    每次访问时,您都在创建新的 instancesconnection。所以只创建一个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;
            }
    

    【讨论】:

    • 更新了我的答案并写了一个代码。看看,如果遇到任何问题,请告诉我
    • 我使用了SqlConnection 对象,因为我错过了您正在使用OleDbCommand 所以只需将Sql 更改为OleDb。好吧,我已经更新了帖子。
    猜你喜欢
    • 2012-04-16
    • 2012-04-07
    • 1970-01-01
    • 2015-01-30
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多