当我单击asp.net中的上一个按钮时,如何插入非重复值

时间:2011-04-19 10:00:22

标签: c# asp.net

我在asp.net c#中创建了在线考试应用程序(基于Web)。在我的申请中

  • 第一个表单包含一个下拉列表 测试&一个开始按钮。

    当我从下拉列表中选择特定测试然后单击开始按钮时,它将转到下一页。

  • 此页面包含一个标签 问题,radiobuttonlist为 答案,下一个&上一个按钮。

在第一种形式:开始按钮的点击事件,我创建了非重复的随机值(对于问题ID),即存储在数组中。 当它重定向到另一个页面时,该数组中的第一个问题将显示答案&单击下一个按钮后,将出现下一个问题,这里我已经在数据库中插入用户选择的值(在radiobuttonlist中选择的答案)来计算分数。问题是,当点击上一个按钮然后选择另一个答案然后它再次重新插入记录,因为我想更新该值,而不是重复的值。我为此编写了以下代码但它不起作用。在这里

if (result != DBNull.Value)

此条件无法正常工作,因为我想检查该值是否存在。

请帮帮我?

 if (Convert.ToInt32(Session["Counter"]) <= 7)
        {
            //a is the array of random values where Counter is my counter start value=1
            SqlCommand cmd = new SqlCommand("SELECT selected from Sel_Ans WHERE Quid=" + a[Convert.ToInt32(Session["Counter"]) - 1] + "", sqlconn);
            sqlconn.Open();
            var result = cmd.ExecuteScalar();
            if (result != DBNull.Value)
            {
                cmd = new SqlCommand("Update Sel_Ans Set Selected=@Selected WHERE Quid=" + a[Convert.ToInt32(Session["Counter"]) - 1] + "", sqlconn);
                SqlParameter Selected = cmd.Parameters.Add("@Selected", SqlDbType.Int, 50);

                Selected.Value = rb;
                sqlconn.Close();
                sqlconn.Open();
                cmd.ExecuteNonQuery();
                sqlconn.Close();

            }
            else
            {
                int t = Convert.ToInt32(Session["Counter"]);

                cmd = new SqlCommand("INSERT INTO Sel_Ans VALUES ('1', @Quid, @Selected, '1')", sqlconn);
                SqlParameter Quid = cmd.Parameters.Add("@Quid", SqlDbType.Int, 50);
                Quid.Value = a[t - 2];

                SqlParameter Selected = cmd.Parameters.Add("@Selected", SqlDbType.Int, 50);
                Selected.Value = rb;
                sqlconn.Close();
                sqlconn.Open();
                cmd.ExecuteNonQuery();
                sqlconn.Close();
            }
            sqlconn.Close();
        }

1 个答案:

答案 0 :(得分:1)

结果应该表明它是否插入新记录(重复键),如果不是更新记录。

修改

 SqlCommand cmd = new SqlCommand("SELECT Count(*)from Sel_Ans WHERE Quid=" + a[Convert.ToInt32(Session["Counter"]) - 1] + "", sqlconn);

            sqlconn.Open();
            int result = cmd.ExecuteScalar();
            if (result != 0)