1

データテーブルにデータを追加するために C# でフォームを作成しました。正常に動作します。データが挿入されたときにメッセージを返すだけで、問題が発生しています。コードは次のとおりです。

conn.Open();
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = ("INSERT INTO datatable (Number_Plate,Registered_Keeper,Make,Model,Year_Of_Make,Colour,Engine_Size,Transmission,Fuel_Type) Values (@Number_Plate,@Registered_Keeper,@Make,@Model,@Year_Of_Make,@Colour,@Engine_Size,@Transmission,@Fuel_Type)");
            cmd.Parameters.AddWithValue("@Number_Plate", Plate.Text); 
            cmd.Parameters.AddWithValue("@Registered_Keeper", Keeper.Text);
            cmd.Parameters.AddWithValue("@Make", Make.Text);
            cmd.Parameters.AddWithValue("@Model", Model.Text);
            cmd.Parameters.AddWithValue("@Year_Of_Make", Year.Text);
            cmd.Parameters.AddWithValue("@Colour", Colour.Text);
            cmd.Parameters.AddWithValue("@Engine_Size", Engine.Text);
            cmd.Parameters.AddWithValue("@Transmission", Transmission.Text);
            cmd.Parameters.AddWithValue("@Fuel_Type", Fuel.Text);
            SqlDataReader reader = cmd.ExecuteReader();
            if (cmd.ExecuteNonQuery()==1)
            {
                button1.Visible = false;
                label10.Visible = true;
            }
            else
            {
                button1.Visible = false;
                label10.Text = "Data Not Added Please try Again!";
                label10.Visible = true;
            }
        }

コードを実行すると、If ステートメントで問題が発生し、次のエラーが表示されます。

このコマンドに関連付けられた開いている DataReader が既に存在し、最初に閉じる必要があります。

助けていただければ幸いです。

4

2 に答える 2

3

この行を削除するだけです (必要ありません) 。

SqlDataReader reader = cmd.ExecuteReader();

レコードを挿入していて、データベースでフェッチしていないため、意味がありません。

スニペット、

        // other codes
        cmd.Parameters.AddWithValue("@Engine_Size", Engine.Text);
        cmd.Parameters.AddWithValue("@Transmission", Transmission.Text);
        cmd.Parameters.AddWithValue("@Fuel_Type", Fuel.Text);
        if (cmd.ExecuteNonQuery()==1)
        {
            button1.Visible = false;
        // other codes
于 2013-03-12T17:39:48.057 に答える
0

以前にデータベースへの接続を開いています。したがって、実行するには最初にそれを閉じる必要があります。

conn.close()
于 2013-03-12T17:40:35.183 に答える