名称“部门 ID”在当前上下文中不存在

本文关键字:上下文 不存在 部门 ID 名称 | 更新日期: 2023-09-27 18:31:02

我有一个方法,可以在数据库中查询 GUID 列表,然后将它们添加到数组中。我希望我的方法从数组中返回一个特定的 GUID(基于组合框选择索引)。以下尝试会在标题中产生错误。

public string PopulateDivisions(string qs, string cs)
    {
        using (SqlConnection connection = new SqlConnection(cs))
        {
            connection.Open();
            SqlCommand command = new SqlCommand(qs, connection);
            SqlDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                int ordinal = reader.GetOrdinal("Name");
                Div_Selecter.Items.Add(reader.GetString(ordinal));
                //Data_Result.Items.Add(reader.GetString(ordinal));
            }
            Div_Selecter.SelectedIndex = 1;
            while (reader.Read())
            {
                int ordinal2 = reader.GetOrdinal("Id");
                for (int i=0; i<=ordinal2; i++)
                {
                    string[] divisionIDs = new string[i];
                    divisionIDs[i] = reader.GetString(ordinal2);
                }
            }
            string selectedDivisionID = divisionIDs[Div_Selecter.SelectedIndex];
            return selectedDivisionID;
        }
    }

名称“部门 ID”在当前上下文中不存在

您在 for 块中声明divisionIDs,因此您无权在该块之外访问它。 您正在尝试在 while 循环之外使用它。 如果需要在循环外部使用该变量,请在 while 循环之前声明它。

问题是您正在尝试访问声明范围之外的部门 ID。

string selectedDivisionID = divisionIDs[Div_Selecter.SelectedIndex];

divisionID 是在 while 循环内的 for 循环内声明的,您需要在 while 循环之外声明变量,以便作用域相同。

好吧,

我认为您不能像在这里那样再次遍历SqlDataReader

 while (reader.Read())
            {
                int ordinal2 = reader.GetOrdinal("Id");
                for (int i=0; i<=ordinal2; i++)
                {
                    string[] divisionIDs = new string[i];
                    divisionIDs[i] = reader.GetString(ordinal2);
                }
            }

SqlDataReader只是前向,所以不能再遍历,可以使用Dataset进行多次迭代。MSDN