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, был необработанным, индекс был за пределами массива? Если функция Count() funciont возвращает 6, значит, есть 6 строк, поэтому 6 полей [0] [1] [2] [3] [4] [5] Я поставил точку останова в цикле for и получаю ошибку во втором цикле, когда i = 1. Как я могу это исправить? Я не вижу ошибки. Спасибо заранее.Индекс находился за пределами массива, но я не вижу ошибки
Как первая строка компиляции вообще? –
Ваш код основан на неправильном предположении, что команда 'show databases' возвращает один столбец для каждой строки в' information_schema.SCHEMATA'. Это предположение неверно - 'information_schema.SCHEMATA' имеет строку для каждой схемы базы данных, а не для каждого столбца, возвращаемого' show databases'. – dasblinkenlight