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

con1 ではなく、con2 のみを開きました。SqlCommand で con1 を渡しました。以下のコードを使用します。

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

まず、Open()を使用してデータベースに接続する必要があります。この場合はcon1.Open();です。次に、アクションを実行して接続を閉じます。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 に答える
0

次のような1つの接続オブジェクトを使用するだけです

 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

con2 という接続を開いていますが、SqlCommand で con1 を使用しています。

私が見る限り、あなたは con1 を開いていません。

于 2012-05-22T04:59:21.843 に答える
0

con1 と con2 という 2 つの異なる SqlConnection オブジェクトがあるようです。con2 を開いていますが、con1 を SqlCommand コンストラクターに渡しています。

エラー メッセージが示すように、使用している接続が開いている必要があります。

con2 を SqlCommand コンストラクターに渡すか、con1 を開くと、コードが機能するはずです。

于 2012-05-22T04:59:30.093 に答える
0

に関連する通話に表示されるcon1唯一の通話であるため、 が開いていることを確認してください。.Open()con2

con1.Open();
于 2012-05-22T05:00:15.063 に答える