Подскажите причину ошибки 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);