首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在asp.net中单击“上一步”按钮时插入不重复的值

如何在asp.net中单击“上一步”按钮时插入不重复的值
EN

Stack Overflow用户
提问于 2011-04-19 18:00:22
回答 1查看 703关注 0票数 1

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

  • 第一个表单包含一个用于测试的下拉列表&一个start按钮。

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

  • 此页包含一个用于提问的标签、用于回答的单选按钮列表、用于下一步和上一步的按钮。

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

代码语言:javascript
复制
if (result != DBNull.Value)

这个条件不能正常工作,因为我想检查这个值是否存在。

请帮帮我?

代码语言:javascript
复制
 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();
        }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-19 20:03:01

结果应指示是否插入新记录(重复键),如果不插入,则改为更新记录。

编辑:

代码语言:javascript
复制
 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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5714657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档