if语句用SQL

时间:2014-01-13 14:54:30

标签: c# sql .net if-statement

有点新鲜,所以你知道。

我正在为一个学校项目制作一个测验制作者,当你进行测验时,你可以选择是否需要一个正确答案。如果它不止一个,答案选项应该是复选框中的项目,否则Radiobuttons。

correctAnswer在SQL中有点保存。

所以我想要做的就是这样的事情,但如果有任何方式可以说“如果它更多,那么使用CheckBox就是一个真正的答案”:

var command2 = new SqlCommand("SELECT * FROM Answer WHERE IdQuestion = @Id", connection);
command2.Parameters.AddWithValue("@Id", questionid);

var dataSet = new DataSet();
var adapter = new SqlDataAdapter(command2);
adapter.Fill(dataSet);

if("correctAnswer" == True)
{
    RadioButtonList.DataSource = dataSet;
    RadioButtonList.DataTextField = "Answer";
    RadioButtonList.DataValueField = "Id";
    RadioButtonList.DataBind();
}
else
{
    CheckBoxList.DataSource = dataSet;
    CheckBoxList.DataTextField = "Answer";
    CheckBoxList.DataValueField = "Id";
    CheckBoxList.DataBind();
}

4 个答案:

答案 0 :(得分:1)

我之前会这样做。你必须在某处获取问题。

SELECT * FROM question WHERE Id=@Id

将其替换为

SELECT *,(SELECT COUNT(Id) FROM answer WHERE correctAnswer=1 AND IdQuestion=question.Id) FROM question WHERE Id=@Id

然后你的行中有另一个元素,其中包含你的问题是否有多个正确的答案。

答案 1 :(得分:0)

您可以计算数据集中的行数,以检查它是否包含多个正确答案,但是ebyrob我也在If("correctAnswer" == True)丢失,您需要获得正确的答案然后数数吧。

   if(ds !=Null)
   { 
   if(ds.tables[0].Rows.Count>0)
    { 
      if(ds.tables[0].Rows.Count>1)
      {
        //multiple answer question go for CheckBoxList
      }
      else
       {
         // Single correct answer .
       }       

     }
    }

答案 2 :(得分:0)

填充数据集后,使用linq查询数据集以查看有多少正确答案。如果是1,请使用单选按钮。如果它超过1,请使用复选框。如果为0,则不显示问题。

答案 3 :(得分:0)

常规C#解决方案没有花哨的查询:

int nCorrect = 0;
foreach(DataRow row in ds.Tables[0].Rows)
    if (Convert.ToBoolean(row["correctAnswer"]) == true)
        ++nCorrect;

if( nCorrect > 1 )
    //checkbox
else
    //radiobutton

可能的LINQ解决方案:

int nCorrect = ds.Tables[0].AsEnumerable().Sum(
    r => r.Field<bool>("correctAnswer") == true ? 1 : 0
    );     // ick!