我在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();
}
答案 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)