Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 选择参数化记录数(带转发器)_C#_Asp.net_Sql - Fatal编程技术网

C# 选择参数化记录数(带转发器)

C# 选择参数化记录数(带转发器),c#,asp.net,sql,C#,Asp.net,Sql,大家好, 所以在这里,我的repeater控件的SQL查询有一个问题,我真的希望发生的是,我有一个从1到60的随机数,这将告诉数据库要选择哪个测试问题(如果只有一个,这不是问题,哈哈)。但是,然后,我需要向repeater控件显示数据库中的20个问题。我的数据库也包含了60个问题。所以,是的,我在网上尝试了一些解决方案,但是我的代码总是只返回一条记录,这让我很痛苦。希望有人能帮助我,我知道对一些人来说这是非常基本的,但我只是一个刚刚起步的程序员,所以是的,提前谢谢 顺便说一句,这是一段代码 pr

大家好,

所以在这里,我的repeater控件的SQL查询有一个问题,我真的希望发生的是,我有一个从1到60的随机数,这将告诉数据库要选择哪个测试问题(如果只有一个,这不是问题,哈哈)。但是,然后,我需要向repeater控件显示数据库中的20个问题。我的数据库也包含了60个问题。所以,是的,我在网上尝试了一些解决方案,但是我的代码总是只返回一条记录,这让我很痛苦。希望有人能帮助我,我知道对一些人来说这是非常基本的,但我只是一个刚刚起步的程序员,所以是的,提前谢谢

顺便说一句,这是一段代码

protected void Page_Load(object sender, EventArgs e)
{
    int i = 1;
    Random r = new Random();
        while (i <= 20)
        {
            int iss;
            string constr = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Mark\Desktop\thesis\WebSite8\App_Data\thesisDB.mdf;Integrated Security=True;User Instance=True";
            SqlConnection con = new SqlConnection(constr);
            string com = "SELECT * from CHAP1_quiz WHERE questionnumber = @num";
            SqlDataAdapter comms = new SqlDataAdapter();
            SqlCommand cmd = new SqlCommand(com, con);
            iss = r.Next(1, 60);
            comms.SelectCommand = cmd;
            cmd.Parameters.Add("@num");
            DataSet ds = new DataSet();
            con.Open();
            comms.Fill(ds);
            Repeater1.DataSource = ds;
            Repeater1.DataBind();
            i++;;
            con.Close();
        }
}
受保护的无效页面加载(对象发送方,事件参数e)
{
int i=1;
随机r=新随机();

虽然(i将以前的randon编号存储在一个数组中,并将这些编号发送到sqlserver,并使用where条件作为
where questionnumber!=arraynumber
您的代码在数据库中会往返20次,因为每次while循环选择一个问题,尝试创建
新数据集
并再次绑定数据源。这就是原因你的名单上只有一个问题

为了避免数据库的往返,不要在代码中使用随机数和
while
循环,而要去掉
while
循环,您可以在SQL中使用
选择
按NEWID()排序(


每次我递增时,你都会创建一个新的数据集。你也会在每次while循环中绑定到你的中继器,这就是为什么你只有一个问题。将所有问题存储在一个列表中,然后在while循环后将该列表绑定到你的中继器
string constr = "...";
DataSet ds = new DataSet();

using (var con = new SqlConnection(constr))
{
    string sql = "SELECT TOP 20 * from CHAP1_quiz ORDER BY NEWID()";
    var adapter = new SqlDataAdapter();
    var cmd = new SqlCommand(sql, con);
    adapter.SelectCommand = cmd;

    con.Open();
    comms.Fill(ds);  
}

Repeater1.DataSource = ds;
Repeater1.DataBind();