我已经在asp.net c#中创建了在线考试应用程序(基于web)。在我的应用中
当我从下拉列表中选择一个特定的测试,然后单击start按钮时,它会转到下一页。
在第一种形式:开始按钮的单击事件中,我创建了不重复的随机值(用于问题ids),即存储在数组中。当它重定向到另一个页面,那么从该阵列的第一个问题将显示答案&点击下一步按钮后,下一个问题将出现,在这里我插入了选定的值(在单选按钮列表中选择的答案)由用户在数据库中计算分数。问题是时,单击上一个按钮,然后选择另一个答案,然后它再次插入记录,因为我想更新该值,而不是重复的值。我为此编写了以下代码,但它不起作用。这里
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();
}
发布于 2011-04-19 20:03:01
结果应指示是否插入新记录(重复键),如果不插入,则改为更新记录。
编辑:
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)
https://stackoverflow.com/questions/5714657
复制相似问题