如何插入非repeted值当我在asp.net中单击previous按钮 [英] How to insert non repeted values when i click previous button in asp.net

查看:118
本文介绍了如何插入非repeted值当我在asp.net中单击previous按钮的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经创建了asp.net C#在线考试应用(基于网络)。在我的应用


  • 第一种形式包含一个下拉列表
    测试&放大器;启动按钮。

    当我选择DropDownList的一个特定的测试,然后点击启动按钮,它进入下一个页面。


  • 本页面包含一个标签
    问题,单选按钮列表的
    答案,接下来的&安培; previous按钮。


在第一种形式:启动按钮的单击事件,我已创建的非重复的随机值(问题编号)即存放在数组中。
当它重定向到另一个页面,然后从该阵列1日问题将显示与解答&安培;点击下一步按钮后,下一个问题会出现,我在这里有插入选定值(单选按钮列表中选择答案)用户数据库来计算成绩。问题是点击previous按钮时,然后选择另一种答案,然后它再重新插入,因为我要更新价值,而不是重复值的记录。我写了下面的code本,但它不工作。在这里,

 如果(结果!= DBNull.Value)

我要检查值存在与否这种情况下无​​法正常工作。

请帮帮我吗?

 如果(Convert.ToInt32(会话[计数器])< = 7)
        {
            // a为随机值的数组,其中计数器是我的柜台开始值= 1
            CMD的SqlCommand =新的SqlCommand(选择Sel_Ans选择WHERE奎德=+ A [Convert.ToInt32(会话[计数器]) - 1] +,sqlconn);
            sqlconn.Open();
            VAR的结果= cmd.ExecuteScalar();
            如果(结果!= DBNull.Value)
            {
                CMD =新的SqlCommand(更新Sel_Ans组选定= @ WHERE选择奎德=+ A [Convert.ToInt32(会话[计数器]) - 1] +,sqlconn);
                的SqlParameter选择= cmd.Parameters.Add(@选,SqlDbType.Int,50);                Selected.Value = RB;
                sqlconn.Close();
                sqlconn.Open();
                cmd.ExecuteNonQuery();
                sqlconn.Close();            }
            其他
            {
                INT T = Convert.ToInt32(会话[计数器]);                CMD =新的SqlCommand(插入Sel_Ans VALUES('1',@Quid,@Selected,'1'),sqlconn);
                奎德的SqlParameter = cmd.Parameters.Add(@英镑,SqlDbType.Int,50);
                Quid.Value =一[T - 2];                的SqlParameter选择= cmd.Parameters.Add(@选,SqlDbType.Int,50);
                Selected.Value = RB;
                sqlconn.Close();
                sqlconn.Open();
                cmd.ExecuteNonQuery();
                sqlconn.Close();
            }
            sqlconn.Close();
        }


解决方案

结果应该表明是否插入新记录或不(重复键),如果没有更新记录来代替。

编辑:

  CMD的SqlCommand =新的SqlCommand(SELECT COUNT(*)从Sel_Ans WHERE奎德=+ A [Convert.ToInt32(会话[计数器]) -  1] + ,sqlconn);            sqlconn.Open();
            INT结果= cmd.ExecuteScalar();
            如果(结果!= 0)

I have created online exam application (web based) in asp.net c#. In my application

  • The first form contains a drop down list for tests & a start button.

    When i select a particular test from the dropdownlist and then clicking the start button ,it goes to the next page.

  • this page contains one label for question, radiobuttonlist for answers, next & previous button.

In the first form :the click event of the start button, i have created non repeated random values (for question ids) i.e stored in array. when it redirects to another page then 1st question from that array will display with answers & after clicking next button next question will appear, here i have inserted selected values(answers selected in radiobuttonlist) by user in database to calculate score.The Problem is when clicking the previous button and then selecting another answer then it reinserts the record again as i want to update that value, not the repeated value. I have written the following code for this but it doesn't work. Here

if (result != DBNull.Value)

this condition doesn't work correctly as i want to check that value exists or not.

Please help me?

 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();
        }

解决方案

the result should indicate whether it inserts new record or not( duplicate key),if not Update the record instead.

EDIT:

 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)

这篇关于如何插入非repeted值当我在asp.net中单击previous按钮的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆