0

我试图运行查询以将数据插入数据库,但是在运行代码时出现错误..

ExecuteNonQuery 需要一个开放且可用的连接。连接的当前状态为关闭。

你能告诉我错误是什么以及为什么会发生吗?

{
    con2.Open();

    if (TextBox1.Text == "")
    {
        Response.Write("<script>alert('please enter Login Name')</script>");
    }
    else if (TextBox2.Text == "")
    {
        Response.Write("<script>alert('please enter Password')</script>");
    }
    else if (TextBox3.Text == "")
    {
        Response.Write("<script>alert('please enter Confirm Password')</script>");
    }
    else
    {
        //if (TextBox2.Text == TextBox3.Text)
        //{

            string a;
            a = "insert into tbl_Purchase_Users(Login_Name, Password, Uname, Uid, EmailID, Role, Status) values(@LName, @Pswd, @Uname, @uid, @Eid, @role, @stat)";
            SqlCommand cm = new SqlCommand(a, con1);
            cm.Parameters.AddWithValue("@LName", TextBox1.Text);

            string original;
            original = TextBox2.Text.Trim();
            int h = original.GetHashCode();
            string withHash = original;
            b1 = Encoding.BigEndianUnicode.GetBytes(withHash);
            encrypted = Convert.ToBase64String(b1);
            cm.Parameters.AddWithValue("@Pswd", encrypted);
            cm.Parameters.AddWithValue("@Uname", TextBox3.Text);
            cm.Parameters.AddWithValue("@uid", TextBox4.Text);
            cm.Parameters.AddWithValue("@Eid", TextBox5.Text);
            cm.Parameters.AddWithValue("@role", TextBox6.Text);
            cm.Parameters.AddWithValue("@stat", TextBox7.Text);

            cm.ExecuteNonQuery();
            Response.Write("<Script>alert('inserted')</script>");
        }
        con2.Close();
    }
4

7 回答 7

2

您只打开了 con2 而不是 con1。您在 SqlCommand 中传递了 con1。使用以下代码:

SqlCommand cm = new SqlCommand(a, con2);
于 2012-05-22T05:00:48.747 回答
0

您正在打开名为 con2 的连接,但您在 SqlCommand 上使用 con1。

从我可以看到你还没有打开 con1

于 2012-05-22T04:59:21.843 回答
0

看起来您有两个不同的 SqlConnection 对象 - con1 和 con2。您正在打开 con2,但将 con1 传递给 SqlCommand 构造函数。

如错误消息所述,您使用的连接必须打开。

如果您将 con2 传递给 SqlCommand 构造函数,或者如果您打开 con1,您的代码应该可以工作。

于 2012-05-22T04:59:30.093 回答
0

确保已打开con1,因为.Open()您的通话中显示的唯一通话与con2

con1.Open();
于 2012-05-22T05:00:15.063 回答
0

只需使用一个连接对象,例如

 con2.Open();
 SqlCommand cm = new SqlCommand(a, con2)
于 2012-05-22T05:02:06.567 回答
0

我看不到 con1.open()。您已经在 Sqlcommand 中使用了 Con1。请打开 Con1.Open();

于 2012-05-22T05:03:02.917 回答
0

First you need to connect with database by using Open(), in ur case con1.Open(); then perform action and close the connection. con1.Close(); else { //if (TextBox2.Text == TextBox3.Text) //{

        string a;
        a = "insert into tbl_Purchase_Users(Login_Name,Password,Uname,Uid,EmailID,Role,Status) values(@LName,@Pswd,@Uname,@uid,@Eid,@role,@stat)";
        SqlCommand cm = new SqlCommand(a, con1);
        con1.Open();
        cm.Parameters.AddWithValue("@LName", TextBox1.Text);

        string original;
        original = TextBox2.Text.Trim();
        int h = original.GetHashCode();
        string withHash = original;
        b1 = Encoding.BigEndianUnicode.GetBytes(withHash);
        encrypted = Convert.ToBase64String(b1);
        cm.Parameters.AddWithValue("@Pswd", encrypted);
        cm.Parameters.AddWithValue("@Uname", TextBox3.Text);
        cm.Parameters.AddWithValue("@uid", TextBox4.Text);
        cm.Parameters.AddWithValue("@Eid", TextBox5.Text);
        cm.Parameters.AddWithValue("@role", TextBox6.Text);
        cm.Parameters.AddWithValue("@stat", TextBox7.Text);

        cm.ExecuteNonQuery();
        Response.Write("<Script>alert('inserted')</script>");
        con1.Close();

}

于 2012-05-22T05:11:01.293 回答