gpt4 book ai didi

c# - 索引在数组的边界之外,但我看不到错误

转载 作者:行者123 更新时间:2023-11-29 05:24:37 28 4
gpt4 key购买 nike

int n =Count("SELECT COUNT(*) FROM information_schema.SCHEMATA");; //return 6

TreeNode[] db_name = new TreeNode[n];
MySqlCommand cmd = new MySqlCommand("show databases", connection);
MySqlDataReader dataReader = cmd.ExecuteReader();

for(i=0;i<n;i++)
{
dataReader.Read();
db_name[i] = new TreeNode(dataReader[i].ToString());
}

为什么我得到 IndexOutOfRangeException was unhandled,Index was outside the bounds of array?如果 Count() 函数返回 6,这意味着有 6 行,所以 6 个字段 [0][1][2][3][4][5]我在 for 循环中放置了一个断点,当 i=1 时,我在第二个循环中得到了错误。我该如何解决?我看不到错误。提前致谢。

最佳答案

dataReader.Read() 的调用前进到下一个可用记录。

当您调用 dataReader[i] 时,您可能试图获取返回数据中不存在的列。在第一次迭代中,dataReader[i] 试图获取第一列,但在第二次迭代中它只是试图获取第二列,然后是第三列,等等。你可能不会返回6 列,所以这将引发异常。

你可以尝试这样的事情,假设每条记录只是一个字符串:

for(i=0; i<n; i++)
{
dataReader.Read();
db_name[i] = new TreeNode(dataReader.GetString(0));

// or use dataReader[0].ToString(), but don't change the index of 0
}

关于c# - 索引在数组的边界之外,但我看不到错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21702966/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com