执行SQL语句时出现If语句问题 - c#

时间:2013-03-12 17:37:52

标签: c# sql if-statement

我在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,必须先关闭它。

任何帮助表示感谢。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您之前已打开过数据库连接。所以你需要先关闭它才能执行。

conn.close()