Подскажите причину ошибки System.IndexOutRangeException - C#
Формулировка задачи:
Здравстуйте.
Задача подключиться в SQL серверу и вывести результат в "TreeView"
Вот код:
В конце строки: TreeNode node = new TreeNode(dr["Термины"].ToString()); в точке с запятой - ругается на "Необработанное исключение типа "System.IndexOutRangeException в System.Data.dll". Убедитесь в правильности имен столбцов данных, Что Индекс не имеет отр.значения и т.д.
Все названия правильные.
Кстати, пробовал менять название "Термины" на неправильное слово - ошибка та же самая.
Что может быть не так ?
Листинг программы
- 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());
и
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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д