Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
GuardianCoder
2 / 2 / 2
Регистрация: 02.06.2017
Сообщений: 63
1
.NET 4.x

Отображение в listView значений таблицы из MSSQL

22.09.2017, 18:08. Просмотров 1409. Ответов 8

Всем добрый день!
Бьюсь пол дня, или затупил, или что-то делаю не так.
Имеется listView, имеется MSSQL и таблица в ней.
в Таблице over "n" столбцов, нужны 3 (id, sName, sAdress).
При загрузке формы пишу:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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 WeifenLuo.WinFormsUI.Docking;
using GuardianSoft.Model;
using System.Data.SqlClient;
using GuardianSoft.Forms;
 
private void FormUsersManagement_Load(object sender, EventArgs e)
        {
            string con = "Data Source=localhost\\SQLEXPRESS;Initial Catalog=GuardianSoftDB;Integrated Security=True";
            listView1.GridLines = true;
            listView1.View = View.Details;
            //Добавляем названия столбцов
            listView1.Columns.Add("#", 25);
            listView1.Columns.Add("Сотрудник", 200);
            listView1.Columns.Add("IP-адрес", 180);
            // SQLQuery для выборки и имя таблицы
            string sql = "Select id,sName,sAdress from GSDBAssociates";
            SqlConnection cnn = new SqlConnection(con);
            cnn.Open();
            SqlCommand cmd=new SqlCommand(sql,cnn);
            SqlDataReader Reader = cmd.ExecuteReader();
            listView1.Items.Clear();
            while (Reader.Read())
            {
                ListViewItem lv = new ListViewItem(Reader.GetInt32(0).ToString());
                lv.SubItems.Add(Reader.GetString(1));
                listView1.Items.Add(lv);
            }
            Reader.Close();
            cnn.Close();
        }
На выходе получаю заполненные первые 2 столбца без столбца "IP-адрес".
Где косяк?...
Отображение в listView значений таблицы из MSSQL
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2017, 18:08
Ответы с готовыми решениями:

Автоматически отображение нумерации в textBox из таблицы listView
Суть такова, У меня имеется форма, на которой textbox и таблица listView например, у меня в...

Отображение данных таблицы MSSQL Server (Не LocalDB)
Смотрел гайд на метаните. Там автор берет данные из локальной БД. А я не могу разобраться, как мне...

Отображение значений из таблицы в combobox
Доброго времени суток ! Возможно уже кто-то задавал подобный вопрос. Подскажите: к проекту...

Заполнение ListView из БД MSSQL 2008
Ребята помогите! Пытаюсь заполнить в Visual Studio 2010 (C#), ListView данными из MS SQL 2008 и...

8
OwenGlendower
Супер-модератор
Эксперт .NET
11567 / 9744 / 4079
Регистрация: 17.03.2014
Сообщений: 19,418
Записей в блоге: 1
Завершенные тесты: 2
23.09.2017, 02:48 2
GuardianCoder, косяк в заполнении ListView. Ты забыл про третью колонку
C#
1
2
3
4
5
6
7
            while (Reader.Read())
            {
                ListViewItem lv = new ListViewItem(Reader["id"].ToString());
                lv.SubItems.Add((string)Reader.GetString["sName"]);
                lv.SubItems.Add((string)Reader.GetString["sAddress"]);
                listView1.Items.Add(lv);
            }
0
GuardianCoder
2 / 2 / 2
Регистрация: 02.06.2017
Сообщений: 63
24.09.2017, 13:45  [ТС] 3
Добрый день.
Неа, ругается на
Error 1 Cannot apply indexing with [] to an expression of type 'method group'
Error 2 Cannot apply indexing with [] to an expression of type 'method group'
0
OwenGlendower
Супер-модератор
Эксперт .NET
11567 / 9744 / 4079
Регистрация: 17.03.2014
Сообщений: 19,418
Записей в блоге: 1
Завершенные тесты: 2
24.09.2017, 13:50 4
GuardianCoder, допустил очепятку. Нужно без GetString, конечно.
C#
1
2
3
4
5
6
7
            while (Reader.Read())
            {
                ListViewItem lv = new ListViewItem(Reader["id"].ToString());
                lv.SubItems.Add((string)Reader["sName"]);
                lv.SubItems.Add((string)Reader["sAddress"]);
                listView1.Items.Add(lv);
            }
0
GuardianCoder
2 / 2 / 2
Регистрация: 02.06.2017
Сообщений: 63
24.09.2017, 13:54  [ТС] 5
Вот и я в той же стороне копал, но все равно нет)
При
C#
1
2
3
4
5
6
while (Reader.Read())
            {
                ListViewItem lv = new ListViewItem(Reader["id"].ToString());
                lv.SubItems.Add((string)Reader["sName"]);
                listView1.Items.Add(lv);
            }
Первые 2 заполняются.
При
C#
1
2
3
4
5
6
7
while (Reader.Read())
            {
                ListViewItem lv = new ListViewItem(Reader["id"].ToString());
                lv.SubItems.Add((string)Reader["sName"]);
                lv.SubItems.Add((string)Reader["sAddress"]);
                listView1.Items.Add(lv);
            }
ListView не строится
Отображение в listView значений таблицы из MSSQL
0
GuardianCoder
2 / 2 / 2
Регистрация: 02.06.2017
Сообщений: 63
24.09.2017, 14:15  [ТС] 6
нашел ошибку - конечно же имя поля таблицы "lv.SubItems.Add((string)Reader["sAdress"]);"/
однако все равно не строится.
0
wm_leviathan
199 / 200 / 70
Регистрация: 12.01.2011
Сообщений: 699
Завершенные тесты: 2
24.09.2017, 15:07 7
Когда то похожее делал с LV писал так.
C#
1
2
3
4
5
6
7
while (Reader.Read())
            {
                listView1.Items.Add("");
                listView1.Items[listView1.Items.Count - 1].SubItems.Add(reader.GetValue(0).ToString());
                listView1.Items[listView1.Items.Count - 1].SubItems.Add(reader.GetValue(1).ToString().Substring(0, 10));
                listView1.Items[listView1.Items.Count - 1].SubItems.Add(reader.GetValue(2).ToString());
            }
0
OwenGlendower
Супер-модератор
Эксперт .NET
11567 / 9744 / 4079
Регистрация: 17.03.2014
Сообщений: 19,418
Записей в блоге: 1
Завершенные тесты: 2
24.09.2017, 15:10 8
Лучший ответ Сообщение было отмечено GuardianCoder как решение

Решение

GuardianCoder, похоже колонка sAdress содержит NULL. Попробуй вариант с проверкой:
C#
1
2
3
4
5
6
7
            while (Reader.Read())
            {
                ListViewItem lv = new ListViewItem(Reader["id"].ToString());
                lv.SubItems.Add((string)Reader["sName"]);
                lv.SubItems.Add((Reader["sAdress"] == DBNull.Value ? "" : (string)Reader["sAdress"]);
                listView1.Items.Add(lv);
            }
1
GuardianCoder
2 / 2 / 2
Регистрация: 02.06.2017
Сообщений: 63
24.09.2017, 20:00  [ТС] 9
Скобку только забыли
lv.SubItems.Add((Reader["sAdress"] == DBNull.Value ? "" : (string)Reader["sAdress"]));
И да, лоханулся, как я мог сам не посмотреть в БД, дабы не мучаться изначально. Спасибо!
0
24.09.2017, 20:00
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2017, 20:00

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Хранение в MSSQL и отображение форматированного текста
Уже несколько дней не могу выяснить, как максимально просто хранить в БД форматированный текст,...

MSSQL вставка уникальных значений
Добрый день, вопрос в следующем. есть в таблице три поля с ключами ( например,название дата и...

Перегруппировка таблицы в mssql
Допустим, есть таблица: ID | NUM 5 | 56 5 | 34 8 | 52 4 | 53 3...

Отображение в ListView
Хочу чтобы при нажатии на батон открывалось диалоговое окно (OpenFileDialog) после чего я выбираю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.