for循环检测到无法访问的代码

时间:2014-12-09 05:09:13

标签: c# mysql visual-studio-2010

尝试从我的问题中发现类似但似乎检测到太多无法访问的代码

我的表格包含4行,我试过这段代码

using (MySqlConnection conn = new MySqlConnection(myConnection))
{
    conn.Open();
    MySqlCommand cmd = new MySqlCommand(query, conn);
    int num = Convert.ToInt32(cmd.ExecuteScalar());
    MySqlCommand cmd1 = new MySqlCommand(query2, conn);
    MySqlDataReader reader = cmd1.ExecuteReader();

    while (reader.Read())
    {
        for (int a = 0; a <= num; a++)
        {
            List li = new List();
            li.linkLabel1.Text = reader["TitleAnime"].ToString();
            flowLayoutPanel1.Controls.Add(li);
            // break;
        }
    }
    conn.Close();
}

但它给了我16个值,那太多了,然后我尝试在for循环中放入break并且我能够实现我的目标并且它给了我4个值,这在我的桌子上是相同的但似乎有一个错误检测到无法访问的代码...我应该忽略它,因为我能够得到我需要的东西吗?还是有另一种方式

3 个答案:

答案 0 :(得分:2)

我很确定你在那里做了太多的查询,并且由于第一个查询和for循环你得到了NxN结果。

尝试这样的事情:

using (MySqlConnection conn = new MySqlConnection(myConnection))
{
    conn.Open();
    MySqlCommand cmd1 = new MySqlCommand(query2, conn);
    MySqlDataReader reader = cmd1.ExecuteReader();

    while (reader.Read())
    {
        List li = new List();
        li.linkLabel1.Text = reader["TitleAnime"].ToString();
        flowLayoutPanel1.Controls.Add(li);
    }
    conn.Close();
}

如果这样做,请考虑将query1cmd1的名称更改为querycmd,因为现在您只有一个< / p>

答案 1 :(得分:0)

这很简单。您正在根据命令对象中数据库中的条目数运行for循环。

如果数据库中有多少条记录,则read方法将迭代四次。有关详细信息,请参阅此文章:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.read(v=vs.110).aspx

简而言之,只需删除for循环,即可获得所需的结果。

答案 2 :(得分:0)

尝试这样的事情:

while (reader.Read())
{
    flowLayoutPanel1.Controls
        .Add(new List { linkLabel1.Text = reader["TitleAnime"].ToString()});
}