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

本文关键字:访问 代码 for 循环 检测 | 更新日期: 2023-09-27 18:33:34

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

,我的表由 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 循环中放置中断,我能够实现我的目标,它给了我 4 个值,这些值在我的桌子上是相同的,但似乎有一个错误称为检测到无法访问的代码。既然我能够得到我需要的东西,我应该忽略它吗?或者有没有另一种方法

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

我很确定你在那里做了太多的查询,并且由于第一个查询和那个 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,因为现在您每个

只有一个

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

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

简而言之,只需删除 for 循环,您就会得到您想要的结果。

尝试这样的事情:

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