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

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

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

Здравстуйте. Задача подключиться в SQL серверу и вывести результат в "TreeView" Вот код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
 
namespace SQL_New_TreeView
{
    public partial class Form1 : Form
    {
        SqlConnection con = new SqlConnection("Data Source=ARCHIVE; Initial Catalog=Термины и Определения; connection timeout=5; TrustServerCertificate=true; Encrypt=True; Integrated Security=SSPI");
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
 
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
 
        private void Form1_Shown(object sender, EventArgs e)
        {
            try
            {
                con.Open();
                MessageBox.Show("Connection Open ! ");
                //con.Close();
            }
            catch (SqlException ex)
            {
                MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                //или MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            treeView1.Nodes.Clear();
            SqlCommand cm = new SqlCommand("SELECT * from Термины", con);
            //SqlDataAdapter da = new SqlDataAdapter("select * from Термины", con);
            try
            {
                SqlDataReader dr = cm.ExecuteReader();
                while (dr.Read())
                {
                    TreeNode node = new TreeNode(dr["Термины"].ToString());
 
                    treeView1.Nodes.Add(node);
                }
            }
            catch(SqlException ex)
            {
                MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                //или MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }
}
В конце строки: 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()); Т.Е.было так:
TreeNode node = new TreeNode(dr["Термины"].ToString());
node.Nodes.Add(dr["Раздел"].ToString());
treeView1.Nodes.Add(node);

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

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

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


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

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

8   голосов , оценка 3.625 из 5
Похожие ответы