名称“部门 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;
}
}
您在 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