Подскажите причину ошибки System.IndexOutRangeException - C#

Узнай цену своей работы

Формулировка задачи:

Здравстуйте. Задача подключиться в SQL серверу и вывести результат в "TreeView" Вот код:
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using System.Data.SqlClient;
  11. namespace SQL_New_TreeView
  12. {
  13. public partial class Form1 : Form
  14. {
  15. SqlConnection con = new SqlConnection("Data Source=ARCHIVE; Initial Catalog=Термины и Определения; connection timeout=5; TrustServerCertificate=true; Encrypt=True; Integrated Security=SSPI");
  16. public Form1()
  17. {
  18. InitializeComponent();
  19. }
  20. private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
  21. {
  22. }
  23. private void Form1_Load(object sender, EventArgs e)
  24. {
  25. }
  26. private void Form1_Shown(object sender, EventArgs e)
  27. {
  28. try
  29. {
  30. con.Open();
  31. MessageBox.Show("Connection Open ! ");
  32. //con.Close();
  33. }
  34. catch (SqlException ex)
  35. {
  36. MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
  37. //или MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
  38. }
  39. }
  40. private void button1_Click(object sender, EventArgs e)
  41. {
  42. treeView1.Nodes.Clear();
  43. SqlCommand cm = new SqlCommand("SELECT * from Термины", con);
  44. //SqlDataAdapter da = new SqlDataAdapter("select * from Термины", con);
  45. try
  46. {
  47. SqlDataReader dr = cm.ExecuteReader();
  48. while (dr.Read())
  49. {
  50. TreeNode node = new TreeNode(dr["Термины"].ToString());
  51. treeView1.Nodes.Add(node);
  52. }
  53. }
  54. catch(SqlException ex)
  55. {
  56. MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
  57. //или MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
  58. }
  59. }
  60. }
  61. }
В конце строки: TreeNode node = new TreeNode(dr["Термины"].ToString()); в точке с запятой - ругается на "Необработанное исключение типа "System.IndexOutRangeException в System.Data.dll". Убедитесь в правильности имен столбцов данных, Что Индекс не имеет отр.значения и т.д. Все названия правильные. Кстати, пробовал менять название "Термины" на неправильное слово - ошибка та же самая. Что может быть не так ?
Да. Забыл ввести между TreeNode node = new TreeNode(dr["Термины"].ToString()); и treeView1.Nodes.Add(node); ещё node.Nodes.Add(dr["Раздел"].ToString()); Т.Е.было так:
Листинг программы
  1. TreeNode node = new TreeNode(dr["Термины"].ToString());
  2. node.Nodes.Add(dr["Раздел"].ToString());
  3. treeView1.Nodes.Add(node);

Решение задачи: «Подскажите причину ошибки System.IndexOutRangeException»

textual
Листинг программы
  1. TreeNode node = new TreeNode("Термины");
  2.                    
  3.                     node.Nodes.Add(dr["Раздел"].ToString());
  4.                     treeView1.Nodes.Add(node);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.625 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы